AWSのEC2からS3のバケットへアクセスするサンプルです。
目次
サンプル | 概要と準備 |
IAMロールを作成する(ロールとポリシーの関係図) | |
VPCにエンドポイントを作成する | |
EC2にロールを割り当てる(EC2とロールとポリシーの関係図) | |
EC2のコンソールからS3のバケットを参照する | |
S3からEC2にファイルを取得して参照する | |
EC2のコンソールからIAMロールを確認する |
概要と準備
- IAMロールのキーをEC2に割り当てS3へアクセスします。
- EC2の作成とS3へのファイルアップロード済みです。
- AWS EC2のAWS CLIをバージョンアップしています。
https://aws.amazon.com/jp/s3/
IAMロールを作成する(ロールとポリシーの関係図)
EC2が使用できるロールを作成し、そのロールにs3にアクセスできるポリシーを追加します |
1.検索入力欄で「IAM」と入力し、表示された「IAM」をクリックします。
2.左の画面で「ロール」をクリックし、「ロールを作成」ボタンをクリックします。
3.「AWSのサービス」を選択します。
4.「一般的なユースケース」で「EC2」を選択し次へをクリックします。
5.「許可ポリシー」の検索欄でS3と入力し「AmazonS3FullAccess」にチェックを入れ次へをクリックします。
6.ロール名を入力します。test-role-2022
7.「IAMロールの更新」をクリックします。
(参考)test-role-2022の信頼されたエンティティ
指定された条件でこのロールを引き受けることができるエンティティ。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
7行目は、ec2となっています。Principalは、主な、主要なという意味です。
(参考)ポリシーAmazonS3FullAccess
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*",
"s3-object-lambda:*"
],
"Resource": "*"
}
]
}
Effect:Allow(許可)でActionは、s3:*とs3-object-lambdaとなっています。
VPCにエンドポイントを作成する
1.検索入力欄で「VPC」と入力し、表示された「VPC」をクリックします。
2.左の画面で「エンドポイント」をクリックし、「エンドポイントを作成」をクリックします。
3.エンドポイントの名前タグを入力します。サービスカテゴリは、AWSのサービスを選択します。
4.検索欄でS3と入力し、Gatewayタイプのサービス名を選択します。
5.VPCは、作成したVPCを選択しました。
6.ルートテーブルも、作成したルートテーブルを選択しました。
「エンドポイントの作成」をクリックするとエンドポイントが作成されます。
(参考)エンドポイントのポリシー
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "*",
"Resource": "*"
}
]
}
EC2にロールを割り当てる(EC2とロールとポリシーの関係図)
1.検索入力欄で「EC2」と入力し、表示された「EC2」をクリックします。
2.ロールを割り当てるEC2にチェックを入れ「アクション」>「セキュリティ」>「IAMロールを変更」をクリックします。
3.IAMロールの選択で作成したロールを選択し「IAMロールの更新」をクリックします。
4.設定したEC2のインスタンス概要には、設定したIAMロールが表示されます。
EC2のコンソールからS3のバケットを参照する
1.Tera TermのSSHでEC2に接続します。
Tera TermのSSHでEC2に接続する
2.aws s3 lsでバケットが表示されます。
[ec2-user@ip-10-0-10-4 ~]$ aws s3 ls
2022-07-12 15:35:34 test-s3-data-2022
[ec2-user@ip-10-0-10-4 ~]$ aws s3 ls s3://test-s3-data-2022
2022-07-13 16:36:42 774 aws-test1.png
2022-07-21 15:10:39 16 test-data1.txt
[ec2-user@ip-10-0-10-4 ~]$
3行目は、バケット内のファイルを表示しています。
デフォルトのリージョンではない場合は、コマンドの後に--region リージョン名を指定します。
aws s3 ls s3://test-s3-data-2022 --region ap-northeast-1
S3からEC2にファイルを取得して参照する
aws s3 cpでバケットのファイルを取得できます。
[ec2-user@ip-10-0-10-4 ~]$ aws s3 cp s3://test-s3-data-2022/test-data1.txt /home/ec2-user
download: s3://test-s3-data-2022/test-data1.txt to ./test-data1.txt
[ec2-user@ip-10-0-10-4 ~]$ more test-data1.txt
hello world test
EC2のコンソールからIAMロールを確認する
aws configure listを入力します。
[ec2-user@ip-10-0-10-4 ~]$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key **************** iam-role
secret_key **************** iam-role
region ap-northeast-1 imds
[ec2-user@ip-10-0-10-4 ~]$
関連の記事