当我尝试从我的 React 应用程序请求 lambda 支持的 API(使用 API 网关,使用 CLI 和云开发套件部署)时,出现以下错误:
Access to XMLHttpRequest at 'https://xxxxxxxxxx.execute-api.eu-west-1.amazonaws.com/prod/xxxxx' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
GET https://xxxxxxxxxx.execute-api.eu-west-1.amazonaws.com/prod/xxxxx net::ERR_FAILED
Run Code Online (Sandbox Code Playgroud)
我使用CDK定义的API资源都传递到这个方法中
使用 AWS CDK 创建 FargateService 时,我收到以下错误:
子网最多可以有 16 个项目。
我有这个代码来创建服务:
var ecsService = new FargateService(this, $"{serviceNameHyphen}-service", new FargateServiceProps
{
TaskDefinition = taskDefinition,
AssignPublicIp = false,
Cluster = infrastructureStack.EcsCluster,
CloudMapOptions = new CloudMapOptions
{
Name = serviceName,
DnsRecordType = DnsRecordType.A,
DnsTtl = Duration.Seconds(60),
FailureThreshold = 2d
},
DesiredCount = 1,
HealthCheckGracePeriod = Duration.Seconds(60),
MaxHealthyPercent = 200,
MinHealthyPercent = 100,
PlatformVersion = FargatePlatformVersion.LATEST,
ServiceName = $"{serviceNameHyphen}-service",
SecurityGroup = albSecurityGroup,
VpcSubnets = new SubnetSelection
{
OnePerAz = true,
SubnetType = SubnetType.PUBLIC,
}
}); …Run Code Online (Sandbox Code Playgroud) 我有一个 CDK 堆栈,可以创建 lambda 和 SNS 主题。策略设置为允许 lambda 发布到 SNS 主题。
我很难在 lambda 运行时代码中指定主题 ARN,因为从技术上讲它尚未创建,只是在堆栈中。
如何在 Lambda 代码中引用主题 ARN,以便 lambda 发布到该主题?Lambda 是用 Python 编写的。我正在使用该fromAsset方法 ( https://docs.aws.amazon.com/cdk/api/latest/docs/aws-lambda-readme.html ) 在堆栈中指定 lambda 运行时代码。
sns = boto3.client('sns')
responce = sns.publish(
TopicArn="arn would go here --- not sure what to put here w/ no arn",
Message="my_message"
)
Run Code Online (Sandbox Code Playgroud) 您好,当我尝试在 AWS CDK 上创建堆栈时遇到问题
import * as cdk from '@aws-cdk/core';
import ec2 = require('@aws-cdk/aws-ec2');
import { SubnetType } from '@aws-cdk/aws-ec2';
export class FirstDemoStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const natGatewayProvider = ec2.NatProvider.instance({
instanceType: new ec2.InstanceType('t3.micro')
});
const vpc = new ec2.Vpc(this, 'VPC_Test', {
cidr: '10.0.0.0/26',
maxAzs: 1,
subnetConfiguration:[
{
subnetType: ec2.SubnetType.PUBLIC,
name: 'Ingress',
cidrMask: 28
},
{
cidrMask: 28,
name: 'Application',
subnetType: ec2.SubnetType.PRIVATE
}
],
natGatewayProvider,
natGateways:2,
});
}
}
Run Code Online (Sandbox Code Playgroud)
所以我得到下一个错误
Cannot …Run Code Online (Sandbox Code Playgroud) 大家好,我是 AWS CDK 的新手,想要使用 AWS 开发人员指南创建一个简单的应用程序 (javaScript): https: //docs.aws.amazon.com/cdk/latest/guide/hello_world.html
似乎一切都工作正常,但是当我尝试运行“cdk部署”命令时,部署甚至没有启动,并且在这个阶段堆栈:

有人知道我做错了什么或者如何得到实际的错误吗?
我有一个简单的 CDK 堆栈来通过ApplicationLoadBalancedEc2Servic. 部署效果很好。但是当我升级时,例如通过将 docker 容器设置为hasura/graphql-engine:v1.3.1-beta.1,更新会永远持续下去,最后的输出类似于:
12:23:01 | UPDATE_IN_PROGRESS | AWS::CloudFormation::Stack
| HasuraStack
12:23:32 | UPDATE_IN_PROGRESS | AWS::ECS::Service
| Hasura/Service/Service
Run Code Online (Sandbox Code Playgroud)
我认为这与desiredCapacity和minCapacity设置为1有关。只要我进入AWS控制台并将它们手动设置为0,更新就会起作用。我尝试了 minCapacity/maxCapacity/desiredCapacity 的不同配置,但没有成功。
最好的结果是运行 2 个实例,旧实例缓慢耗尽,新实例将所有新流量重定向到新实例。有没有什么简单的方法可以实现类似的目标并获得更新?短暂的停机时间也是可以接受的。
这是代码:
const cluster = new Cluster(this, 'Cluster', {
vpc: props.vpc,
});
cluster.addCapacity('ASGroupCapacity', {
instanceType: new InstanceType(props.instanceType || 't3.micro'),
});
this.service = new ApplicationLoadBalancedEc2Service(this, 'Hasura', {
publicLoadBalancer: true,
cluster,
// assignPublicIp: props.hasuraServiceProps?.assignPublicIp || true,
domainName: `${props.subDomain}.${props.zone.zoneName}`,
domainZone: props.zone,
protocol: ApplicationProtocol.HTTPS,
memoryReservationMiB: 512,
desiredCount: 1,
taskImageOptions: {
image: ContainerImage.fromRegistry('hasura/graphql-engine:v1.3.0'),
containerPort: 8080,
environment: …Run Code Online (Sandbox Code Playgroud) 我在使用 CDK 时遇到问题,因为该this属性出错并表示我无法将“this”分配给类型构造的参数。这发生在该const s3ListLambdaRole部分的开始,并使之后的每个新变量声明也会出现同样的错误。
import * as sns from '@aws-cdk/aws-sns';
import * as subs from '@aws-cdk/aws-sns-subscriptions';
import * as sqs from '@aws-cdk/aws-sqs';
import * as cdk from '@aws-cdk/core';
import * as s3 from '@aws-cdk/aws-s3';
import * as lambda from '@aws-cdk/aws-lambda';
import * as path from 'path';
import { Bucket } from '@aws-cdk/aws-s3';
import * as iam from'@aws-cdk/aws-iam';
export class SecurityBaselineDevStack extends cdk.Stack {
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const testSecurityqueue = …Run Code Online (Sandbox Code Playgroud) ApiGateway 1 有一个别名,但它的接口不符合 V2:
这是domainName:
const domainName = new apigw2.DomainName(config.scope, config.id + 'DomainName', {
domainName: config.domainName,
certificate: config.certificate,
});
Run Code Online (Sandbox Code Playgroud) 假设您有一个 AWS CDK 堆栈创建了一些资源
您想要部署到 S3 的 Web 应用程序会使用它们。
如何以编程方式将配置(例如 appsync 端点的端点 url)传递到要部署的应用程序?
AWS Amplify 创建aws-exports.js应用程序使用的文件。该文件由一些 amplify 命令创建,并放入应用程序目录中,以便从应用程序访问。
有没有关于如何在不使用放大的情况下解决此问题的工具或建议?如果有人有一些例子或想法那就太好了。
我正在使用使用生成器创建的标准 React 应用程序。
我正在使用 AWS CDK 创建状态机。而不是默认的重试策略,如下所示:
"Retry": [
{
"ErrorEquals": [
"Lambda.ServiceException",
"Lambda.AWSLambdaException",
"Lambda.SdkClientException"
],
"IntervalSeconds": 2,
"MaxAttempts": 6,
"BackoffRate": 2
}
]
Run Code Online (Sandbox Code Playgroud)
我只想制定一项如下所示的包罗万象的政策:
"Retry": [
{
"ErrorEquals": [
"States.ALL"
],
"IntervalSeconds": 10,
"MaxAttempts": 3,
"BackoffRate": 1.5
}
]
Run Code Online (Sandbox Code Playgroud)
不幸的是,我找不到在部署堆栈时删除默认策略的方法。我的包罗万象只是添加到重试策略数组的末尾。
"Retry": [
{
"ErrorEquals": [
"Lambda.ServiceException",
"Lambda.AWSLambdaException",
"Lambda.SdkClientException"
],
"IntervalSeconds": 2,
"MaxAttempts": 6,
"BackoffRate": 2
},
{
"ErrorEquals": [
"States.ALL"
],
"IntervalSeconds": 10,
"MaxAttempts": 3,
"BackoffRate": 1.5
}
]
Run Code Online (Sandbox Code Playgroud)
有人知道如何摆脱默认政策吗?
aws-cdk ×10
javascript ×2
typescript ×2
amazon-ec2 ×1
amazon-sns ×1
aws-amplify ×1
aws-lambda ×1
node.js ×1
reactjs ×1
retrypolicy ×1