AWSAWS CDK

AWS CDKでEC2にIAMロールを割り当てる時の覚書

参考になる記事があまりなかったのでまとめました 前提情報 AWS CDKのVersion1.35.0時点のコンテンツです。アップグレードによる変更などで参考にならなくなる可能性もありますのでご了承ください。 やりたいこと […]

広告ここから
広告ここまで

参考になる記事があまりなかったのでまとめました

前提情報

AWS CDKのVersion1.35.0時点のコンテンツです。アップグレードによる変更などで参考にならなくなる可能性もありますのでご了承ください。

やりたいこと

AWS CDKで作成したEC2インスタンスにIAMロールを設定したい

コード

数が多いので、リソース毎に

IAM Policy

import {
    ManagedPolicy, Effect, PolicyStatement
} from '@aws-cdk/aws-iam'
import { Stack } from '@aws-cdk/core';

export class IAMPolicyForCloudFront {
    public static create(stack: Stack) {
        const statement = new PolicyStatement({
            effect: Effect.ALLOW,
        })
        statement.addActions(
            "cloudfront:*Invalidation*",
            "cloudfront:*getDistribution*"
        )
        statement.addResources('*')
        const managedPolicy = new ManagedPolicy(
            stack,
            'IAMPolicyForCloudFront',
            {
                description: "To access CloudFront from WordPress",
                statements: [
                    statement
                ]
            }
        )
        return managedPolicy
    }
}

IAM Role

import { Stack } from "@aws-cdk/core";
import { Role, ServicePrincipal } from "@aws-cdk/aws-iam";
import { IAMPolicyForCloudFront } from "./CloudFront";

export class EC2InstanceRole {
    public static create(stack: Stack) {
        const role = new Role(
            stack,
            'IAMInstanceRole',
            {
                managedPolicies: [
                    IAMPolicyForCloudFront.create(stack)
                ],
               assumedBy: new ServicePrincipal("ec2.amazonaws.com"),
               path: '/'
            }
        )
        return role
    }
}

EC2 Instance

import { Stack } from "@aws-cdk/core";
import { CfnInstanceProfile } from "@aws-cdk/aws-iam";
import { CfnInstance } from '@aws-cdk/aws-ec2';
import { EC2InstanceRole } from './Role"

export class InstanceProfile {
    public static create(stack: Stack) {
        const instanceRole = EC2InstanceRole.create(stack)
        const iamInstanceProfile = new CfnInstanceProfile(
            stack,
            'InstanceProfile',
            {
                path: '/',
                roles: [instanceRole.roleName]
            }
        )
        const instance = new CfnInstance(
            stack,
            'Instance',
            {
               iamInstanceProfile: iamInstanceProfile.ref,
               ...

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts