AWS EC2からS3へアクセス(EC2にロールをセット)

AWSのEC2からS3のファイルへアクセスするサンプルです。

目次

サンプル 概要と準備
  IAMロールを作成する(ロールとポリシーの関係図)
VPCエンドポイントを作成する
EC2にロールをセットする(EC2とロールとポリシーの関係図)
EC2のコンソールからIAMロールを確認する
EC2のコンソールからS3のファイルを参照/取得する

概要と準備

  • 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:*"
            ],
            "Resource": "*"
        }
    ]
}

Effect:Allow(許可)でActionは、s3:*となっています。

 

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.インスタンスの一覧を表示します。

3.ロールを割り当てるEC2にチェックを入れ「アクション」>「セキュリティ」>「IAMロールを変更」をクリックします。

 

4.IAMロールの選択で作成したロールを選択し「IAMロールの更新」をクリックします。

 

5.設定したEC2のインスタンス概要には、設定したIAMロールが表示されます。

ロールの反映は即時にされます。EC2の再起動は不要です。

 

EC2のコンソールからIAMロールを確認する

1.Tera TermのSSHでEC2に接続します。
Tera TermのSSHでEC2に接続する

 

2.aws configure listを入力し、Typeにiam-roleが設定されていることを確認します。

[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 ~]$

EC2にロールがセットされていない場合以下のメッセージが表示されます。

Unable to locate credentials. You can configure credentials by running "aws configure".

 

EC2のコンソールからS3のファイルを参照/取得する

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行目は、バケット内のファイルを表示しています。

 

S3のファイルをEC2へ転送する

aws s3 cpでS3のバケット内のファイルをEC2に転送しています。

[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

関連の記事

AWS EC2からS3へアクセスする(ユーザーのアクセスキー)

△上に戻る