标签: aws-cdk

CloudWatch 日志组在 cdk destroy 时未删除

我有这个 CDK 代码:

const logGroup = new LogGroup(this, 'MyAppLogGroup', {
  logGroupName: 'myapp',
  retention: RetentionDays.ONE_DAY
});
Run Code Online (Sandbox Code Playgroud)

当我运行 时cdk deploy,会在 CloudWatch 中创建日志组,但当我运行 时cdk destroy,它不会被删除。有什么方法可以启用此功能吗?

amazon-cloudwatch amazon-cloudwatchlogs aws-cdk

11
推荐指数
2
解决办法
6021
查看次数

如何使用 aws cdk 使用 Cognito UserPool 作为身份验证提供程序之一创建 Cognito IdentityPool?

我正在尝试使用 CognitoUserPool 作为一个身份验证提供程序创建 Cognito FederatedIdentityPool。创建 UserPool 很简单:

    const userPool = new cognito.CfnUserPool(this, 'MyCognitoUserPool')
    const userPoolClient = new cognito.CfnUserPoolClient(this, 'RandomQuoteUserPoolClient', {
      generateSecret: false,
      userPoolId: userPool.userPoolId
    });
Run Code Online (Sandbox Code Playgroud)

但是我不确定如何将其连接到身份池:

    const identityPool = new cognito.CfnIdentityPool(this, 'MyIdentityPool', {
      allowUnauthenticatedIdentities: false,
      cognitoIdentityProviders: ?????
    });
Run Code Online (Sandbox Code Playgroud)

根据IdentityProvider API 文档,它看起来有一个属性cognitoIdentityProviders,但是它接受一个cdk.Token/CognitoIdentityProviderProperty.

现在我尝试创建一个CognitoIdentityProviderProperty对象并传递它cognitoIdentityProviders: [{ clientId: userPoolClient.userPoolClientId }],但我收到以下异常:

 1/2 | 09:48:35 | CREATE_FAILED        | AWS::Cognito::IdentityPool   | RandomQuoteIdentityPool Invalid Cognito Identity Provider (Service: AmazonCognitoIdentity; Status Code: 400; Error Code: InvalidParameterException; Request ID: 4d6d579a-6455-11e9-99a9-85159bc87779) …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cdk

10
推荐指数
1
解决办法
4364
查看次数

AWS CDK 如何引用刚刚使用 CDK 创建的子网

我试图引用几个子网来创建 ec2 实例,但我有点卡住了。假设我有这个:

   const vpc = new Vpc(this, 'gwc-vpc', {
      cidr: "10.20.0.0/16",
      maxAzs: 3,
      subnetConfiguration: [
        {
          subnetType: SubnetType.PRIVATE,
          name: 'gossipSubnet',
          cidrMask: 24
        },
        {
          subnetType: SubnetType.PRIVATE,
          name: 'dbSubnet',
          cidrMask: 24
        },
        {
          subnetType: SubnetType.PUBLIC,
          name: 'extSubnet',
          cidrMask: 24
        }
      ]
    })
Run Code Online (Sandbox Code Playgroud)

例如,如何在 dbSubnet 中创建实例?更好的是,如果我想创建一个具有 2 个接口的 EC2 实例,每个接口位于不同的子网(dbSubnet 和 gossipSubnet)中,该怎么办?有任何想法吗?

谢谢!

aws-cdk

10
推荐指数
2
解决办法
2万
查看次数

AWS CDK -- 找不到模块“@aws-cdk/aws-ec2”

我昨天刚开始玩 AWS CDK,发现了一些非常奇怪的东西。

首先,我将 TypeScript 用于我的 CDK 应用程序(我曾经cdk init --language typescript生成项目文件并尝试导入aws-ec2模块,所以这就是我所做的:

import cdk = require('@aws-cdk/core');
import ec2 = require('@aws-cdk/aws-ec2');

export class vpcStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {

//.... all other codes go here....

Run Code Online (Sandbox Code Playgroud)

但是,以这种方式导入 aws-ec2 模块时,在尝试部署堆栈时出现此错误:

? Unable to compile TypeScript:
lib/cdk-type_script-stack.ts:2:22 - error TS2307: Cannot find module '@aws-cdk/aws-ec2'.

2 import ec2 = require('@aws-cdk/aws-ec2');
                       ~~~~~~~~~~~~~~~~~~

Subprocess exited with error 1
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为这里API 文档清楚地说明这是我应该在打字稿中导入aws-ec2模块的方式

我错过了什么吗?任何帮助将不胜感激,也提前致谢!

module amazon-ec2 amazon-web-services aws-cdk

10
推荐指数
2
解决办法
1万
查看次数

AWS CDK 将 API 网关 URL 传递到同一堆栈中的静态站点

我正在尝试在单个堆栈中部署 S3 静态网站和 API 网关/lambda。

S3 静态站点中的 javascript 调用 lambda 来填充 HTML 列表,但它需要知道用于 lambda 集成的 API 网关 URL。

目前,我像这样生成了一个 RestApi ......

    const handler = new lambda.Function(this, "TestHandler", {
      runtime: lambda.Runtime.NODEJS_10_X,
      code: lambda.Code.asset("build/test-service"),
      handler: "index.handler",
      environment: {
      }
    });

    this.api = new apigateway.RestApi(this, "test-api", {
      restApiName: "Test Service"
    });    

    const getIntegration = new apigateway.LambdaIntegration(handler, {
      requestTemplates: { "application/json": '{ "statusCode": "200" }' }
    });

    const apiUrl = this.api.url;
Run Code Online (Sandbox Code Playgroud)

但是在 cdk 部署上,apiUrl =

"https://${Token[TOKEN.39]}.execute-api.${Token[AWS::Region.4]}.${Token[AWS::URLSuffix.1]}/${Token[TOKEN.45]}/"

因此,直到静态站点需要该值之后,才会解析/生成 url。

如何计算/查找/获取 API 网关 URL 并更新 cdk …

aws-lambda aws-api-gateway aws-cdk

10
推荐指数
1
解决办法
1279
查看次数

使用 GitLab CI 使用 AWS CDK (python) 进行 CI/CD 的最佳方法是什么?

我将 AWS CDK(使用 Python)用于在 Fargate 上运行的容器化应用程序。我想cdk deploy在 GitLab CI 进程中运行并将 git 标记作为环境变量传递,以替换在 Fargate 中运行的容器。我目前正在使用 CloudFormation ( aws cloudformation update-stack ...)做类似的事情。还有其他人以这种方式使用 AWS CDK 进行 CI/CD 吗?有没有更好的方法来做到这一点?

另外,我应该为这项工作使用什么作为我的基本图像?我在想我可以从 python 容器开始并安装节点,反之亦然。或者也许在某处我还没有找到预建的容器。

这是似乎运行良好的开始:

CDK:
  image: python:3.8
  stage: deploy
  before_script:
    - apt-get -qq update && apt-get -y install nodejs npm
    - node -v
    - npm i -g aws-cdk
    - cd awscdk
    - pip3 install -r requirements.txt
  script:
    - cdk diff
    - cdk deploy --require-approval never
Run Code Online (Sandbox Code Playgroud)

编辑 2020-05-04:

CDK 可以在 期间构建 docker 镜像 …

amazon-web-services continuous-deployment gitlab gitlab-ci aws-cdk

10
推荐指数
1
解决办法
3458
查看次数

如何使用 CDK 获取资源的逻辑 ID?

我正在尝试为 CDK 构造编写一些测试,以验证定义为构造一部分的安全组规则。

构造看起来类似于以下内容。

export interface SampleConstructProps extends StackProps {
  srcSecurityGroupId: string;
}

export class SampleConstruct extends Construct {
  securityGroup: SecurityGroup;

  constructor(scope: Construct, id: string, props: SampleConstructProps) {
    super(scope, id, props);

    // const vpc = Vpc.fromLookup(...);
    this.securityGroup = new SecurityGroup(this, "SecurityGroup", {
      vpc: vpc,
      allowAllOutbound: true,
    });

    const srcSecurityGroupId = SecurityGroup.fromSecurityGroupId(stack, "SrcSecurityGroup", props.srcSecurityGroupId);

    this.securityGroup.addIngressRule(srcSecurityGroup, Port.tcp(22));
  }
}
Run Code Online (Sandbox Code Playgroud)

我想编写一个类似于以下内容的测试。

test("Security group config is correct", () => {
  const stack = new Stack();
  const srcSecurityGroupId = "id-123";
  const testConstruct = …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation aws-cdk

10
推荐指数
2
解决办法
4819
查看次数

如何在 cdk 部署期间跳过 IAM 更改确认?

当使用需要 IAM 策略更新的 CDK 部署任何更改时,您会收到以下消息:

This deployment will make potentially sensitive changes according to your current security approval level

接下来是要进行的策略更改列表,然后是确认对话框。总的来说,我认为这是一件好事,但不幸的是它使自动化部署变得困难。

是否可以设置隐藏标志或环境变量来跳过此确认?就像 Terraform 的旗帜一样-auto-approve

amazon-web-services aws-cdk

10
推荐指数
1
解决办法
4976
查看次数

AWS CDK 多个应用程序

是否可以在同一个项目中拥有两个 CDK 应用程序,如下所示:

from aws_cdk import core

from stack1 import Stack1
from stack2 import Stack2

app1 = core.App()
Stack1(app1, "CDK1")
app1.synth()

app2 = core.App()
Stack2(app2, "CDK2")
app2.synth()
Run Code Online (Sandbox Code Playgroud)

并部署它们?同步/异步?

是否可以在另一个应用程序中引用一个应用程序中的某些资源?

amazon-web-services aws-cdk infrastructure-as-code

10
推荐指数
2
解决办法
9747
查看次数

aws cdk 将映像推送到 ecr

我正在尝试做一些看起来相当合乎逻辑且直接的事情。

我正在使用 AWS CDK 来配置 ecr 存储库:

repository = ecr.Repository(
    self, 
    id="Repo", 
    repository_name=ecr_repo_name,
    removal_policy=core.RemovalPolicy.DESTROY
)
Run Code Online (Sandbox Code Playgroud)

然后,我有一个 Dockerfile,它位于我的项目的根目录中,我试图将其推送到部署中的同一个 ECR 存储库。

我在相同的服务代码中执行此操作:

assets = DockerImageAsset(
    self, 
    "S3_text_image", 
    directory=str(Path(__file__).parent.parent),
    repository_name=ecr_repo_name
)
Run Code Online (Sandbox Code Playgroud)

部署正常并继续进行,并创建了 ECR 存储库,但映像被推送到默认位置aws-cdk/assets

如何让部署将我的 Dockerfile 发送到我希望它驻留的确切 ECR 存储库?

amazon-web-services docker amazon-ecr aws-cdk

10
推荐指数
1
解决办法
1万
查看次数