LoginSignup
1
3

More than 5 years have passed since last update.

EC2(リモートデスクトップ接続)からS3バケットにアクセスする

Last updated at Posted at 2019-04-21

自分用の備忘メモになります。
EC2で作成したインスタンスからS3に格納されたファイルにPythonで読み込むまでの手順です。
開発等で一時的にアクセスするのであれば、“boto3”ライブラリを用いる方法があるようなのですが、ここではAWSの機能を活用したパターンです。Python等でファイルを読み込む際に、コードの記述が正しくても“HTTP 403: Access Denied”となります。EC2とS3は違う環境になるので、ネットワークと権限の設定が必要になります。

1.VPCの設定(EC2とS3間の接続ポイントの作成)
2.IAMロールを作成
3.IAMユーザーを作成
4.IAMロールをEC2インスタンスに紐づけ
5.Python3でファイル読み込み
6.その他参考

1.VPCの設定(EC2とS3間の接続ポイントの作成)
ネットワーク設定の位置づけです。
1)エンドポイントの作成
(1)サービスメニューから“ネットワーキングとコンテンツ配信”>“VPC”をクリックする。
vpcメニュー.PNG

(2)左側のパネルの“エンドポイント”をクリック後、“エンドポイントの作成”をクリックする。
vpc作成.PNG
(3)サービスカテゴリーに“”を選択後、サービス“com.amazonaws.xxxxxxx(リージョン).s3”を選択し、
vpcs3.PNG

(3)作成したエンドポイントとEC2Cの紐づけ
VPC欄に、EC2インスタンス作成時のVPC IDを選択(プルダウンから選択できます。)し、対象のルートテーブルにチェックをします。
vpc作成2.PNG

選択後、最下部の“エンドポイントの作成”を押す。

2.IAMロールを作成する。
権限設定のはじめのステップになります。
(1)サービスメニューから“ネットワーキングとコンテンツ配信”>“IAM”をクリックする
iamメニュー.PNG

(2)左側のパネルの“ロール”をクリック後、“ロールの作成”をクリックする
ロールの作成.PNG

(3)EC2のあたりをクリック後、下の“次のステップ:アクセス権限”をクリックする
ロールの作成2.PNG

(4)ポリシーのフィルターに“S3”を入力後、“AmazonS3FullAccess”を選択(もしくは、ファイル読み込みのみであれば、“AmazonS3ReadOnlyAccess”を選択)し、下の“次のステップ:タブ”をクリックする
ロールの作成2.PNG

(5)“次のステップ:確認”をクリックする

(6)ロール名(任意)を入力し、下の“ロールの作成”をクリックするとロールが完成します
ロールの作成3.PNG

詳細は下記URLです。
https://docs.aws.amazon.com/ja_jp/sdk-for-java/v1/developer-guide/java-dg-roles.html

3.IAMユーザーの作成
EC2のリモートデスクトップ接続のユーザーIDで作成します。
(1)左側のパネルの“ユーザー”をクリック後、“ユーザーを追加”をクリックする
ユーザー追加.PNG

(2)ユーザー名(リモートデスクトップ接続のユーザID)を入力し、アクセスの種類に“プログラムによるアクセス”を選択し、下の“次のステップ:タグ”をクリックする。
ユーザー追加2.PNG

(3)“次のステップ:確認”をクリックする
(4)“ユーザーの作成:確認”をクリックする
(5)アクセスキーID、シークレットアクセスキーのCSVファイルをダウンロードする。
CSVファイルは1回しかダウンロードできませんので、取扱いに注意してください。
ユーザー追加3.PNG

4.IAMロールをEC2インスタンスに紐づけ
下記URLが手順になります。
https://aws.amazon.com/jp/blogs/news/easily-replace-or-attach-an-iam-role-to-an-existing-ec2-instance-by-using-the-ec2-console/

5.EC2上でpythonを実行する際のファイルアクセスのコード
AWSのサービスでは、“boto3”のライブラリーを使用します。
コード.PNG

boto3ライブラリーの解説URL
https://boto3.amazonaws.com/v1/documentation/api/latest/index.html

6.その他参考
・AWSで“HTTP 403: Access Denied”の対応一覧
https://aws.amazon.com/jp/premiumsupport/knowledge-center/s3-troubleshoot-403/

・特定のS3バケットにアクセスさせる場合
https://qiita.com/komazawa/items/988c346274666023d9dd

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3