标签: aws-cdk

如何配置 API 网关端点以需要 API 密钥?

我正在使用 AWS CDK 构建 Web 服务。我希望所有端点都需要 api 密钥才能允许连接。

目前我像这样设置我的网络服务:

    // Define the API Gateway
    const api = new apigw.RestApi(scope, 'MyApiGateway', {
        defaultCorsPreflightOptions: {
            allowOrigins: apigw.Cors.ALL_ORIGINS,
            allowMethods: apigw.Cors.ALL_METHODS, // this is also the default
        }
    });

    const apiKeyName = 'myKeyName';
    const apiKey = new apigw.ApiKey(scope, 'api-key', {
        apiKeyName,
        enabled: true
    });

    // define the usage plan
    const usagePlan = api.addUsagePlan('UsagePlan', {
        name: 'UsagePlan',
        throttle: {
            rateLimit: 100,
            burstLimit: 200,
        },
    });

    // add the API key to the usage plan
    usagePlan.addApiKey(apiKey); …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-api-gateway aws-cdk

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

如何将标签添加到AWS-CDK构造

如何将标签添加到特定于AWS-CDK的构造中,或者如何向堆栈中创建的所有资源添加更好的标签定义?

aws-cdk

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

如何获取创建的EC2实例的实例ID

尝试获取 CF 创建的 EC2 实例的实例 ID(由 AWS CDK 生成),这至少适用于 v0.28:

    const natInstance1 = new CfnInstance(this, 'NatInstance1', {
      imageId: NAT_AMI_ID,
      instanceType: NAT_INSTANCE_TYPE,
      subnetId: vpc.publicSubnets[0].subnetId,
      keyName: NAT_SSH_KEY,
      sourceDestCheck: false,
      securityGroupIds: [ 
        publicSecurityGroup.securityGroupId
      ]
    });

    new ec2.CfnEIPAssociation(this, 'NatEip1', {
      eip: NAT_EIP_POOL[0],
      instanceId: natInstance1.instanceId
    });
Run Code Online (Sandbox Code Playgroud)

这在 v0.37.0 中不再有效,出现错误:Property 'instanceId' does not exist on type 'CfnInstance'.ts(2339)

aws-cdk

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

AWS CDK 如何处理假定返回列表而不是字符串的 Fn.getAtt

我有一个 AWS::EC2::VPCEndpoint 资源类型,我想获取其 DnsEntries 值,根据https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint。 html#aws-resource-ec2-vpcendpoint-return-values是 DNS 条目列表。我希望能够从列表中选择第一项,所以我尝试了这样的操作:

const vpcEndpoint = new ec2.CfnVPCEndpoint(this, "vpcendpoint", {
    serviceName: "com.amazonaws.vpce.us-west-2.vpce-svc-xxxxxx",
    vpcId: "vpc-123",
    privateDnsEnabled: false,
    subnetIds: ["subnet-123"],
    vpcEndpointType: "Interface",
});
const fisrtDnsEntry = cdk.Fn.select(0, cdk.Fn.getAtt(vpcEndpoint.logicalId, "DnsEntries"))
Run Code Online (Sandbox Code Playgroud)

这是行不通的,因为Fn.select需要一个字符串数组,但Fn.getAtt返回IResolvable并且只有toString()方法。

知道我还能做什么吗?

aws-cdk

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

如何使用 AWS CDK TYPESCRIPT 引用现有 VPC 来部署 Beanstalk 应用程序

使用 AWS CDK TYPESCRIPT 来部署 Beanstalk 应用程序。我能够使用 AWS CDK Typescript 设置 Beanstalk 应用程序,但找不到在现有 VPC 中以高可用性设置它的方法。这是我的 ebstack.ts

#!/usr/bin/env node
import cdk = require('@aws-cdk/core');
import elasticbeanstalk = require('@aws-cdk/aws-elasticbeanstalk');


export class ElbtestStack extends cdk.Stack {
  constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    //objects for access parameters
    const node = this.node;

    const appName = 'DEVELOPMENT';

    const platform = node.tryGetContext("platform");

    const app = new elasticbeanstalk.CfnApplication(this, 'Application', {
      applicationName: appName
    });
    const optionSettingProperties: elasticbeanstalk.CfnEnvironment.OptionSettingProperty[] = [
        {
            namespace: 'aws:autoscaling:launchconfiguration',
            optionName: 'InstanceType',
            value: 't3.small', …
Run Code Online (Sandbox Code Playgroud)

vpc amazon-web-services typescript amazon-elastic-beanstalk aws-cdk

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

如何获取 AWS-CDK 传输流构造的 ARN

我正在CDK 中创建CfnDeliveryStream,我想稍后在 IAM 角色中使用 ARN。我找到了属性attrArn,但它没有记录。我的问题是:如何访问传输流的 ARN(类似于S3 结构中可用的内容)。

谢谢,本尼

amazon-kinesis-firehose aws-cdk

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

CDK RDS 公共可访问数据库

我想用 cdk 创建一个可公开访问的数据库(dev db)。我知道如何通过 Web UI 做到这一点。我需要将公共可访问性设置为 true 并允许我的 IP 作为安全组的入站。


        const vpc = new ec2.Vpc(this, 'Vpc')

        const postgres = new rds.DatabaseInstance(this, 'Postgres', {
            engine: rds.DatabaseInstanceEngine.POSTGRES,
            instanceClass: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, ec2.InstanceSize.MICRO),
            masterUsername: 'postgres',
            vpc,
        })
Run Code Online (Sandbox Code Playgroud)

这是我目前的状态,它工作正常,但没有公共访问权限

amazon-rds amazon-vpc aws-cdk

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

如何使用 Cloudformation 或 CDK 为 S3 存储桶启用请求指标

我可以通过选中复选框 ( https://ibb.co/bWDLcNT )在 AWS 控制台中手动启用(S3 存储桶的请求指标,apid 选项)。但我试图通过代码来做到这一点。我尝试寻找使用 CloudFormation / CDK(nodeJs) / AWS CLI 的解决方案。但没有运气。我找到的解决方案只涉及使用过滤器等创建指标,而不是启用它。有什么建议吗?

amazon-s3 amazon-web-services aws-cloudformation amazon-cloudwatch aws-cdk

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

AWS CDK 授予 Lambda DynamoDB FullAccess

我有一个 lambda,我希望能够创建 dynamo db 表(不仅可以访问,还可以创建具有动态名称的表)。

const lambdaA = new lambda.Function(this, 'lambda-a', {
  functionName: 'lambda-a',
  memorySize: 256,
  runtime: lambda.Runtime.NODEJS_12_X,
  handler: 'index.handler',
  code: lambda.Code.fromAsset(path.join(require.resolve('/lambda-a'), '..')),
});
Run Code Online (Sandbox Code Playgroud)

如何使用 AWS CDK 执行此操作?

我想我需要以某种方式将策略AmazonDynamoDBFullAccess(或其他一些允许创建表的策略)添加到 lambda 的执行角色。

amazon-web-services aws-lambda aws-cdk

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

如何使用 CDK 创建包含多个语句的 IAM 策略?

我正在尝试探索是否有更好的方法。我只是使用策略生成器定义 IAM 策略,然后使用以下内容——

const policyDocument = {
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "FirstStatement",
      "Effect": "Allow",
      "Action": ["iam:ChangePassword"],
      "Resource": "*"
    },
    {
      "Sid": "SecondStatement",
      "Effect": "Allow",
      "Action": [
        "s3:List*",
        "s3:Get*"
      ],
      "Resource": [
        "arn:aws:s3:::confidential-data",
        "arn:aws:s3:::confidential-data/*"
      ],
      "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
    }
  ]
};

Run Code Online (Sandbox Code Playgroud)

那么下面需要定义——

const customPolicyDocument = iam.PolicyDocument.fromJson(policyDocument);

const newManagedPolicy = new ManagedPolicy(stack, 'MyNewManagedPolicy', {
  document: customPolicyDocument
});
const newPolicy = new Policy(stack, 'MyNewPolicy', {
  document: customPolicyDocument
});
Run Code Online (Sandbox Code Playgroud)

最后,我创建了一个角色并附加了策略 -

const TestBucketRole = new iam.Role(this, 'TestBucketRole', {
        assumedBy: new iam.ArnPrincipal('arn:aws:iam::123456789012:user/user1'), …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-iam aws-cdk

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