我有一个从 Dynamodb 流读取的 lambda 函数。我有从同一 AWS 账户中的另一个堆栈导出的 Dynamodb 流 ARN。现在,在 Lambda 中添加 eventSource 时,它会向 Table 构造询问。
const function = new lambda.Function(...);
function.addEventSource(new DynamoEventSource(table, {
startingPosition: lambda.StartingPosition.TrimHorizon
}));
Run Code Online (Sandbox Code Playgroud)
参考:https: //awslabs.github.io/aws-cdk/refs/_aws-cdk_aws-lambda-event-sources.html#dynamodb-streams
但我有流 ARN。有什么方法可以利用它来添加事件源。或者我必须导出表本身?
我目前正在使用 aws-cdk 生成 cloudformation 模板,我想访问使用 定义的参数
CfnParameter(self, id="Platform", type="String", default="My Platform")
Run Code Online (Sandbox Code Playgroud)
带有参考(就像!Ref Platform 在 cloudformation 模板中一样)
你们中的任何人都知道 aws cdk 中的 Ref 相当于什么。
这是我上面定义的参数的 yaml 等效项
Parameters:
Platform:
Type: String
Default: "My Platform"
Run Code Online (Sandbox Code Playgroud) 我是 CDK 的新手,需要了解高级构造与低级构造之间的区别。有人可以用简单的话解释一下吗:)
温暖的问候。
我有一个 CDK 应用程序,我可以在其中获取上下文值,例如:
const stage: StageType = app.node.tryGetContext('stage');
Run Code Online (Sandbox Code Playgroud)
我按照 JetBrains 文档使用 ts-node 设置运行配置,但是上下文是由 CDK CLI 创建的。我的代码无法使用必要的上下文值运行。
有没有办法使用 CDK CLI 来启动应用程序来进行调试?
我正在尝试使用自定义域部署 API 网关。(没有函数,只是其他堆栈可以导入和使用的通用 API 网关)
bin/api-app.ts:
import { APIAppStack } from '../lib/api-app-stack';
export class MyAPIAppStack extends cdk.Stack {
constructor(parent: cdk.App, name: string, props: cdk.StackProps) {
super(parent, name, props);
new APIAppStack(this, 'APIApp', {
domainName: this.node.tryGetContext('domain'),
siteSubDomain: this.node.tryGetContext('subdomain'),
});
}
}
const app = new cdk.App();
new MyAPIAppStack(app, 'APIAppStack'+(((process.env.subdomain || "").length > 0)?"-"+process.env.subdomain:""), { env: {
region: process.env.AWS_DEFAULT_REGION,
account: process.env.CDK_DEFAULT_ACCOUNT
}});
app.synth();
Run Code Online (Sandbox Code Playgroud)
这是我的构造
lib/api-app-stack::
export interface APIAppProps {
domainName: string;
siteSubDomain: string;
}
export class APIAppStack extends Construct {
constructor(parent: …Run Code Online (Sandbox Code Playgroud) 我想要做的是将事件从不同的 AWS 帐户发送到我包含 eventbus 的帐户。
为此,我尝试将角色/策略附加到 EventBus,但我无法做到。我尝试使用 grantPutEvents 但也没有运气。这个怎么做?(添加/附加策略)
此外,如果我附加策略,其中主体作为其他 AWS 账户的账户 ID,资源作为 EventBus 的 ARN,这是否允许我发送事件?或者我需要做更多的事情吗?
我正在尝试使用 AWS CDK 创建 AWS DMS 任务。但我不知道从哪里开始。我找不到关于如何使用 CDK 创建 DMS 任务的良好文档。我找到了有关这两个主题的文章,但找不到解决此问题的文章 - 讨论如何使用 CDK 创建 DMS 任务。
谁能指出我正确的文章来解释这一点或帮助我做到这一点?
PS - 我已经使用 dms maven 依赖项初始化了项目。我正在使用JAVA。
谢谢
在控制台中执行此操作的文档非常清楚,https://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-s3.html,但在 CDK 中复制确实是痛苦。
我的问题是如何在 CDK 中创建一个支持 s3(中间没有 lambda)的 Rest API,或者至少 apigateway.AwsIntegration 是如何工作的。
我尝试了很多东西,并意识到我是盲编码。我已经在 restApi、lambda、sqs、dynamoDB、s3 之间进行了多次集成,所有这些都非常简单。但是直接把 API Gateway 和 S3 集成在一起,快要哭死了。
我需要一个 restAPI 将请求有效负载直接存储到 S3 存储桶。
这是我已经尝试过的:
向 RestApi 添加策略声明:
const apiResourcePolicy = new iam.PolicyDocument({
statements: [
new iam.PolicyStatement({
effect: iam.Effect.ALLOW,
actions: ['s3:Put*'],
resources: [bucket.bucketName],
principals: [new ServicePrincipal('apigateway.amazonaws.com')]
})
]
});
const api = new apigateway.RestApi(this, "dispatch-api", {
restApiName: "my api name",
description: "api description",
policy: apiResourcePolicy
});
Run Code Online (Sandbox Code Playgroud)
我认为这应该足以解决权限问题,但是当我将 AWS 集成添加到 API 时,如下所示:
const getS3Integration = new apigateway.AwsIntegration({
service: …Run Code Online (Sandbox Code Playgroud) 我想使用 AWS CDK 在源代码中定义一个 CodeBuild 项目。CodeBuild 项目需要能够构建然后推送 docker 镜像。
在 AWS 控制台中创建新的 CodeBuild 项目时,有一个选项:
特权 如果您想构建 Docker 映像或希望您的构建获得提升的权限,请启用此标志。
我在API Docs 中没有看到用于打开Privileged标志的等效API。
var codeBuildProject = new Project(this, "Example_Build", new ProjectProps
{
ProjectName = "ExampleBuildFromCDK",
// How to add Privileged?
BuildSpec = BuildSpec.FromSourceFilename("example/buildspec.yml"),
Source = Source.CodeCommit(new CodeCommitSourceProps
{
Repository = Repository.FromRepositoryArn(this, "CodeCommit", CodeRepositoryArn),
BranchOrRef = "refs/heads/example/added-docker-images"
})
});
Run Code Online (Sandbox Code Playgroud)
如果我尝试在不将Privileged设置为 true 的情况下运行我的构建,我将收到标准错误:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? …Run Code Online (Sandbox Code Playgroud) 我收到以下错误:
此 CDK CLI 与您的应用程序使用的 CDK 库不兼容。请将 CLI 升级到最新版本。(云组装架构版本不匹配:支持的最大架构版本是 8.0.0,但发现是 9.0.0)
发出cdk diff命令后。
我确实运行了,npm install -g aws-cdk@latest之后我成功安装了新版本的软件包:Successfully installed aws-cdk.assets-1.92.0 aws-cdk.aws-apigateway-1.92.0 aws-cdk.aws-apigatewayv2-1.92.0 ... etc. 和pip install -r requirements.txt
但是打字后cdk --version我仍然得到1.85.0 (build 5f44668).
我的部分setup.py如下:
install_requires=[
"aws-cdk.core==1.92.0",
"aws-cdk.aws-ec2==1.92.0",
"aws-cdk.aws_ecs==1.92.0",
"aws-cdk.aws_elasticloadbalancingv2==1.92.0"
],
Run Code Online (Sandbox Code Playgroud)
我现在卡住了,因为将软件包降级setup.py到 1.85.0 throwing ImportError: cannot import name 'CapacityProviderStrategy' from 'aws_cdk.aws_ecs'。
帮助:),我想使用最新的软件包版本。
aws-cdk ×10
python ×2
typescript ×2
amazon-iam ×1
amazon-s3 ×1
aws-dms ×1
c# ×1
debugging ×1
node.js ×1
webstorm ×1