LoginSignup
2
1

More than 3 years have passed since last update.

AWS CDKを0系から1系にアップグレードするときの覚書 [現在進行系]

Last updated at Posted at 2019-07-25

GAされたのは嬉しいのですが、やはりメジャーアップデートは破壊的変更が入ってます。
ということで、今やってるアプグレ作業を随時メモしていきます。

Version

  • Before: 0.23.0
  • After: 1.1.0

@aws-cdk/cdk -> @aws-cdk/coreに変更

@aws-cdk/cdkは1系がアップされていません。
@aws-cdk/coreをインストールして、import / requireしている部分を書き換えてください。

$ yarn add -D @aws-cdk/core
$ yarn remove @aws-cdk/cdk

@aws-cdk/cdkのgetContextを@aws-cdk/coreのtryGetContextに変更

@aws-cdk/coreに変えると、getContextでコンパイルエラーが出ます。
これはtryGetContextに名前が変わっているからです。

@aws-cdk/iamはコンストラクタで定義に

Before

new IAM.PolicyStatement().allow()
.addActions(
        "arn:aws:dynamodb:us-east-1:0000000000:table/hoge*"
)
.addResources(
        "dynamodb:DeleteItem",
        "dynamodb:GetItem",
        "dynamodb:PutItem",
        "dynamodb:Query",
        "dynamodb:Scan",
        "dynamodb:UpdateItem"
)

After

new IAM.PolicyStatement({
      resources: [
        "arn:aws:dynamodb:us-east-1:0000000000:table/hoge*"
      ],
      actions: [
        "dynamodb:DeleteItem",
        "dynamodb:GetItem",
        "dynamodb:PutItem",
        "dynamodb:Query",
        "dynamodb:Scan",
        "dynamodb:UpdateItem"
      ]
    })

@aws-cdk/aws-appsyncのCdnGraphQLApiのattributesが変わっている

Before

const api: AppSync.CfnGraphQlApi = ...
const apiId = api.graphQLApiApiId

After

const api: AppSync.CfnGraphQlApi = ...
const apiId = api.attrApiId

bin/aws-cdk.tsでrunする必要がなくなった

cdk.Appをrunする必要がありましたが、不要になりました。
app.run()を残していると怒られます。

Before

#!/usr/bin/env node
import 'source-map-support/register';
import cdk = require('@aws-cdk/core');
import { Cdk1Stack } from '../lib/cdk-1-stack';

const app = new cdk.App();
new Cdk1Stack(app, 'Cdk1Stack');
app.run()

After

#!/usr/bin/env node
import 'source-map-support/register';
import cdk = require('@aws-cdk/core');
import { Cdk1Stack } from '../lib/cdk-1-stack';

const app = new cdk.App();
new Cdk1Stack(app, 'Cdk1Stack');

IAM.Roleに擬似パラメーターがデフォルトで入る(っぽい)

const serviceRole = new IAM.Role(stack, `${name}DynamoDBRole`, {
      assumedBy: new IAM.ServicePrincipal('appsync.amazonaws.com'),
      path: '/service-role/'
    })

特に変更していなかったのですが、Principalで擬似パラメーターが入るように変わってました。


IAM Statement Changes
┌───┬────────────────────────────────────────────────┬────────┬────────────────┬───────────────────────────────────┬───────────┐
│   │ Resource                                       │ Effect │ Action         │ Principal                         │ Condition │
├───┼────────────────────────────────────────────────┼────────┼────────────────┼───────────────────────────────────┼───────────┤
│ - │ ${Shifter-graphql-developmentDynamoDBRole.Arn} │ Allow  │ sts:AssumeRole │ Service:appsync.amazonaws.com     │           │
├───┼────────────────────────────────────────────────┼────────┼────────────────┼───────────────────────────────────┼───────────┤
│ + │ ${Shifter-graphql-developmentDynamoDBRole.Arn} │ Allow  │ sts:AssumeRole │ Service:appsync.${AWS::URLSuffix} │           │
└───┴────────────────────────────────────────────────┴────────┴────────────────┴───────────────────────────────────┴───────────┘
(NOTE: There may be security-related changes not in this list. See http://bit.ly/cdk-2EhF7Np)

cdk.outというディレクトリが作られる

パット見た感じ、traceやCloudFormationのJSONなどが吐き出されている様子です。
.gitignoreしておいたほうが良さそう。

2
1
0

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
2
1