Open6

CDKの開発で参考になったサイト

Chidoriashi1990Chidoriashi1990

CDK

コマンド一覧

  • npm run build TypeScriptをJavaScriptにコンパイルします
  • npm run watch 変更を監視してコンパイルします
  • npm run test Jestのユニットテストを実行します
  • npx cdk deploy このスタックをデフォルトのAWSアカウント/リージョンにデプロイします
  • npx cdk diff デプロイされたスタックと現在の状態を比較します
  • npx cdk synth 合成されたCloudFormationテンプレートを出力します

https://docs.aws.amazon.com/cdk/?icmpid=docs_homepage_sdktoolkits
https://docs.aws.amazon.com/cdk/api/v2/
https://constructs.dev

Lambda

https://docs.powertools.aws.dev/lambda/python/latest/
https://docs.getmoto.org/en/latest/
https://boto3.amazonaws.com/v1/documentation/api/latest/index.html

Chidoriashi1990Chidoriashi1990

https://dev.classmethod.jp/articles/prevent-accidental-cdk-destroy/

AWSTemplateFormatVersion: '2010-09-09'
Description: 'Attach deny delete stack policy to CDK deploy role'

Parameters:
  Qualifier:
    Type: String
    Default: 'hnb659fds'
    Description: 'The qualifier used in the CDK bootstrap process'

Resources:
  DenyDeleteStackPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      ManagedPolicyName: !Sub 'deny-delete-stack-policy-${AWS::AccountId}-${AWS::Region}'
      PolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Deny
            Action:
              - cloudformation:DeleteStack
            Resource: '*'
      Roles:
        - !Sub 'cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}'

Outputs:
  DenyDeleteStackPolicyArn:
    Description: ARN of the Deny Delete Stack Policy
    Value: !Ref DenyDeleteStackPolicy
Chidoriashi1990Chidoriashi1990

セキュリティスキャンツール

https://github.com/cdklabs/cdk-nag

https://tech.nri-net.com/entry/cdk_nag_basic

npm install cdk-nag --save-dev
# bin/cdk-nag-sample.ts
# 今回はAWS Solutionsのルール群を使用
#!/usr/bin/env node
import 'source-map-support/register';
import * as cdk from 'aws-cdk-lib';
import { CdkNagSampleStack } from '../lib/cdk-nag-sample-stack';
// 以下2行追記
import { AwsSolutionsChecks } from 'cdk-nag'
import { Aspects } from 'aws-cdk-lib';
const app = new cdk.App();
new CdkNagSampleStack(app, 'CdkNagSampleStack', {});
// 追記
Aspects.of(app).add(new AwsSolutionsChecks({ verbose: true }));

https://zenn.dev/ncdc/articles/7aa0d9928689c4

https://aws.amazon.com/jp/blogs/news/manage-application-security-and-compliance-with-the-aws-cloud-development-kit-and-cdk-nag/