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

目次

概要と準備

  • privateにあるEC2からVPCエンドポイント(Gatewayタイプ)を使用してS3にアクセスします。
    privateのEC2にはpublicのEC2からログインします。
  • IAMロールにS3操作の権限をつけてEC2に割り当てます。
  • VPCエンドポイントのIDの最初は、vpce-になります。(vpc + endpointのe)
  • 以下の場合は、VPCエンドポイントは不要です。
    public subnetにあるEC2からInternet Gatewayでつながっている場合のS3へのアクセス
    private subnetにあるEC2からNAT gateway→Internet Gatewayでつながっている場合のS3へのアクセス
  • 以下が行われていることが前提です。
    AWS Tera TermのSSHでEC2に接続する

     

    S3操作の権限を持つロールを作成する

    EC2が使用できるロールを作成し、そのロールにs3にアクセスできるポリシーを追加します

    1.検索入力欄で「IAM」と入力し、表示された「IAM」をクリックします。

    2.左の画面で「ロール」をクリックし、「ロールを作成」ボタンをクリックします。

    3.「AWSのサービス」を選択します。

    4.「一般的なユースケース」で「EC2」を選択し次へをクリックします。

    5.「許可ポリシー」の検索欄でS3と入力し「AmazonS3FullAccess」にチェックを入れ次へをクリックします。

    6.ロール名を入力します。test-role-2022

    7.「ロールを作成」をクリックするとロールが作成されます。

     

    VPCエンドポイントを作成する

    1.検索入力欄で「VPC」と入力し、表示された「VPC」をクリックします。

    2.左の画面で「エンドポイント」をクリックし、「エンドポイントを作成」をクリックします。

    3.エンドポイントの名前タグを入力します。サービスカテゴリは、AWSのサービスを選択します。

     

    4.検索欄でS3と入力し、Gatewayタイプのサービス名を選択します。

     

    5.VPCは、作成したVPCを選択します。

     

    6.ルートテーブルは、privateのsubnetに関連付けして作成したルートテーブルを選択します。

     

    7.ポリシーは、フルアクセスにしました。
    「エンドポイントの作成」をクリックするとエンドポイントが作成されます。

     

    備考

    VPCエンドポイントのIDの最初は、vpce-になります。(vpc + endpointのe)

     

    VPCエンドポイントを作成すると、ルートテーブルにはターゲットは自動で追加されます。

    エンドポイント追加前 privateのルートテーブル(test11-route-private)

     

     

    エンドポイント追加後 privateのルートテーブル(test11-route-private)

     

    EC2にロールをセットする

    1.検索入力欄で「EC2」と入力し、表示された「EC2」をクリックします。

    2.インスタンスの一覧を表示します。

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

     

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

     

    5.インスタンスの一覧で対象のEC2を選択し詳細タブのIAMロールには、設定したロールが表示されます。

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

     

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

    1.Tera TermのSSHでEC2に接続します。
    AWS 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行目は、バケット内のファイルを表示しています。

    関連の記事

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

    △上に戻る