我正在开发一个 Web 应用程序。
我的应用程序在子域上运行 app.mydomain.com
我需要为我的应用贴上白标。我要求我的客户通过 CNAME 将他们自己的网站指向我的应用程序。
design.customerwebsite.com 指着 app.mydomain.com
这是我试图解决这个问题的方法。
我创建了一个/etc/nginx/sites-available名为为文件customerwebsite.com
添加符号链接的新文件。
我使用certbot以下命令安装了 SSL 。
sudo certbot --nginx -n --redirect -d design.customerwebsite.com
这是我的 NGINX conf 文件的代码 customerwebsite.com
server
{
server_name www.customerwebsite.com;
return 301 $scheme://customerwebsite.com$request_uri;
}
server {
# proxy_hide_header X-Frame-Options;
listen 80;
listen 443;
server_name design.customerwebsite.com;
ssl_certificate /etc/letsencrypt/live/design.customerwebsite.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/design.customerwebsite.com/privkey.pem;
root /opt/bitnami/apps/myapp/dist;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_hide_header X-Frame-Options;
proxy_pass http://localhost:3000;
}
proxy_set_header X-Forwarded-Proto $scheme;
if ( $http_x_forwarded_proto != …Run Code Online (Sandbox Code Playgroud) nginx ssl-certificate multi-tenant amazon-web-services aws-acm
要创建 Elastic Beanstalk 应用程序和环境,我有以下代码:
// this: the class instance extending Construct
const application = new CfnApplication(this, 'Application', {
applicationName: 'some-name'
});
const environment = new CfnEnvironment(this, 'Environment', {
environmentName: 'production',
applicationName: application.applicationName,
platformArn: 'arn::of::plaform',
solutionStackName: 'a-valid-stack-name'
});
Run Code Online (Sandbox Code Playgroud)
在 Route53 中创建别名记录需要一个目标实现IAliasRecordTarget
const record = new AliasRecord(this, 'ARecord', {
recordName: 'a-record',
target: ?
zone: zone
});
Run Code Online (Sandbox Code Playgroud)
如何使用环境作为目标?在 aws-cdk 存储库中寻找实现 IAliasRecordTarget 的类,除了 Cloudfront 分发和基本负载均衡器之外,不会产生很多候选对象
使用 AWS-CDK。我必须将写入 SQS 的 Lambda 移至 VPC 内。我添加了接口网关,以允许通过以下方式从 VPC 直接连接到 SQS:
props.vpc.addInterfaceEndpoint('sqs-gateway', {
service: InterfaceVpcEndpointAwsService.SQS,
subnets: {
subnetType: SubnetType.PRIVATE,
},
})
Run Code Online (Sandbox Code Playgroud)
Lambda 部署到同一个 VPC(默认情况下部署到同一个私有子网),并且我将 QUEUE_URL 作为 env 参数传递,就像没有 VPC 时一样:
const ingestLambda = new lambda.Function(this, 'TTPIngestFunction', {
...
environment: {
QUEUE_URL: queue.queueUrl,
},
vpc: props.vpc,
})
Run Code Online (Sandbox Code Playgroud)
Lambda 代码简单地发送消息:
const sqs = new AWS.SQS({ region: process.env.AWS_REGION })
return sqs
.sendMessageBatch({
QueueUrl: process.env.QUEUE_URL as string,
Entries: entries,
})
.promise()
Run Code Online (Sandbox Code Playgroud)
如果没有 VPC,此发送可以工作,但现在 Lambda 只是在发送 SQS 消息时超时。我在这里缺少什么?
到目前为止,根据我的经验,我发现为了开始在 VS Code 中查看 TS 类型的智能感知选项,我需要开始键入属性名称。
如果我输入“a”,我会看到包含“a”的选项,但没有其他选项。
如果我足够了解 API 并了解属性的名称,这当然很有用。
但是,如果我是 API 新手并且只想查看选项列表,那么我只想查看所有内容的可滚动列表。
我知道我可以查看类型定义文件,这没问题。但是,在声明类型属性的同一位置查看选项会更容易。
是否可以无需输入字母(这也缩小了搜索范围)?
我有一个 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 ×3
amazon-sns ×1
amazon-sqs ×1
aws-acm ×1
aws-lambda ×1
multi-tenant ×1
nginx ×1
typescript ×1