LoginSignup
13
8

More than 3 years have passed since last update.

CloudFormationでEC2にIAMロールを付与する

Last updated at Posted at 2020-09-19

CloudFormationで作成したEC2から「S3の特定バケットに対してアクセス可能にする」方法の紹介です。
テンプレートファイルに「S3の特定バケットに対してアクセスを許可する」IAMロールを作成しEC2に付与しました。

4 Step

テンプレートファイルに以下の4項目を追記します。

  1. IAMロールの記述
  2. IAMポリシーの記述
  3. IAMインスタンスロールの記述
  4. EC2インスタンスにIAMインスタンスロールを付与

1. IAMロールの記述

IAMユーザーと似ていますが異なる点があります。

  • IAMユーザーはにアクセス権限を付与
  • IAMロールはAWSリソースにアクセス権限を付与

今回アクセス権限を付与したいのはEC2ですので、IAMロールを使用します。

  S3AccessRole:
    Type: "AWS::IAM::Role"
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement: 
          - 
            Effect: "Allow"
            Principal: 
              Service: 
                - "ec2.amazonaws.com"
            Action: 
              - "sts:AssumeRole"
      Path: "/"

2. IAMポリシーの記述

アクセス権限の具体的な内容は、IAMポリシーに記述します。
Roleに先程記述したIAMロールを指定します。

<bucketname>は実際のバケット名に置き換えます。

  S3AccessPolicies:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: s3access
      PolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Effect: Allow
          Action:
            - "s3:ListAllMyBuckets"
            - "s3:GetBucketLocation"
          Resource: "arn:aws:s3:::*"
        - Effect: Allow
          Action: "*"
          Resource:
            - "arn:aws:s3:::<bucketname>"
            - "arn:aws:s3:::<bucketname>/*"
      Roles:
      - !Ref S3AccessRole

3. IAMインスタンスプロファイルの記述

EC2インスタンスとロールを紐づけるのに、IAMインスタンスプロファイルを記述します。

  S3AccessInstanceProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Path: "/"
      Roles:
      - !Ref S3AccessRole

4. EC2インスタンスにIAMインスタンスロールを付与

EC2インスタンスにIAMインスタンスプロファイルを付与します。

  Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      IamInstanceProfile:
        !Ref S3AccessInstanceProfile

参考

AWS::IAM::Role - AWS CloudFormation
やーまんぶろぐ

13
8
1

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
13
8