S3バケットをEC2からアクセスする

先ほど作成したS3バケットをEC2からアクセスしてみます。

そのままではS3へアクセスする権限がありませんので、アクセスするためにEC2インスタンス自体にアクセスのためのIAMロールを付与します。

(1) 「サービス」->「コンピューティング」->「EC2」 の順番にクリックし、EC2の画面を開きます。

(2) 左側から「インスタンス」を選択すると、インスタンス一覧が出てきます。自分の作成したインスタンス(HandsOn######-ec2)の行のチェックボックス選択し、「アクション」の部分から「セキュリティ」->「IAMロールを変更」を選択します。

(3) 次にAWS Academy Learner Labの場合には(25)の手順へ進みます。それ以外の場合には次の手順以降でポリシーとロールを作成します。

(4) 割り当てる新しいIAMロールを作成します。「新しいIAMロールを作成」をクリックします。

(5) 新しいタブが開きますので、「ロールの作成」をクリックします。

(6) ユースケースを選択します。

  • ユースケースの「EC2」を選択し「次へ」をクリック

(7) ロールにアタッチするポリシーを作成します。「ポリシーの作成」をクリックします。

(8) 「サービスの選択」をクリックし、「S3」を選択します。

(9) 「アクション」の項目は本来は必要なものを設定しますが、今回はハンズオンですので「リスト」「読み込み」「書き込み」のチェックを入れます。さらに画面下の項目の設定を行っていきます。

(10)「リソース」の前の▼の展開ボタンをクリックし、「bucket」の「ARNの追加」をクリックし、「Bucket name」に先ほどS3バケットを作成した時のバケット名を入力し「追加」をクリックします。また、「object」の「ARNの追加」をクリックし、「Bucket name」に先ほどS3バケットを作成した時のバケット名を入力し、「Object name」には*を入力し、「追加」をクリックします。

bucket
Bucket name: handson######-s3-日付-好きな番号数桁
  例:   handson202203-s3-20220324-###
object
Bucket name: handson######-s3-日付-好きな番号数桁
  例:   handson202203-s3-20220324-###
Object name: *
  • 上記を入力すると、自動で「ARNの指定」の欄が入力されます。「追加」をクリックします。
  • 例とした場合は arn:aws:s3:::handson202203-s3-20220324-###/* のようになります。

(11)「次のステップ : タグ」をクリックします。

(12)「タグを追加」の画面で「タグの追加」をクリックします。タグは何をしているものかの目印となるので入れておくのが良いです。複数のタグを追加できます。次のように入力します。

キー: Name
値: HandsOn######-s3-policy
   ( 例: HandsOn202203-s3-policy)

(13) 「次のステップ : 確認」をクリックします。

(14) ポリシー名を入力します。「名前」の部分に次のように入力します。入力が終わりましたら、「ポリシーの作成」をクリックします。

名前: HandsOn######-s3-policy
  例:   HandsOn202203-s3-policy

(15) ポリシーが作成されました。

(16) 「ロールの作成」のタブに戻ります。

(17) 先ほど作成したポリシー(HandsOn######-s3-policy)にチェックを入れて選択します。ポリシーが見つからない時には、右側にあるリロードのアイコンをクリックしてみてください。

(18) 「次のステップ:タグ」をクリックします。

(19) 「タグを追加」の画面で「タグの追加」をクリックします。タグは何をしているものかの目印となるので入れておくのが良いです。複数のタグを追加できます。次のように入力します。

キー: Name
値: HandsOn######-role
   ( 例: HandsOn202203-role )

(20)「次のステップ:確認」をクリックします。

(21) ロール名に次のように入力します。

ロール名: HandsOn######-role
  例:   HandsOn202203-role

(22) 入力が終わりましたら、「ロールの作成」をクリックします。

(23) ロールが作成されました。

(24) 次に、Webブラウザの「IAM ロールを変更」のタブに戻ります。

(25) Webブラウザの「IAM ロールを変更」のタブに切り替えたら、EC2インスタンスにIAMロールの割り当てを行います。IAMロール名に、先ほど作成したロールを選択します。ロールが見つからない時には、IAMロールの選択ボックスの右側にあるリロードのアイコンをクリックしてみてください。選択したら、「保存」をクリックします。

【AWS Academy Learner Labの場合】

IAMロール: LabInstanceProfile

【上記以外】

IAMロール: HandsOn######-role
   例:   HandsOn202203-role

(26) EC2にIAMロールの割り当てを行いました。これでEC2から作成したS3へのアクセスが可能となります。

(27) EC2へSSHでログインします。(Cloud9利用の場合は、Cloud9からEC2にSSHでアクセスする)

(28) ログインしたEC2のシェル上で次のコマンドを実行します。このコマンドは、テキストファイルを作成。その作成したファイルをS3へアップロードします。<S3バケット名> の部分をバケット名に置き換えてください。

echo "test upload from ec2" > textupload.txt
aws s3 cp textupload.txt s3://<S3バケット名>/

コマンド例: aws s3 cp textupload.txt s3://handson202203-s3-20220324-###/

(29) ファイルがアップロードされたことを次のコマンドで確認します。うまく作成できていればファイルの作成日とサイズの一覧が出てきます。

aws s3 ls s3://<S3バケット名>/
  • コマンド例: aws s3 ls s3://handson202203-s3-20220324-###/
  • ファイルが作成されていることは、AWSコンソール(Web画面)のS3のページからも確認することができます。  

ここまででS3の利用のワークショップは終了です。他のオプションを行わない場合は、「後片付け」の項目を行ってください。