gpt4 book ai didi

amazon-web-services - 如何在代码中将 nginx 部署到 AWS fargate?

转载 作者:行者123 更新时间:2023-12-02 18:20:17 29 4
gpt4 key购买 nike

假设我有一个如下所示的 docker-compose 文件:

version: '3'
services:
nginx:
image: nginx:latest
ports:
- 80:80

我希望能够理想地将其部署到 AWS Fargate(尽管我很沮丧,我会采用 ECS 或任何其他有效的东西) - 现在我不关心卷、扩展或任何其他问题可能很复杂,我只是在追求最低限度,这样我就可以开始理解发生了什么。唯一需要注意的是,它需要在代码中 - 我可以从 CI 服务器启动自动部署。

CloudFormation 是正确的工具吗?我似乎只能找到实际上有一千行 yaml 或更多行的示例,它们都不起作用,而且无法调试。

最佳答案

您可以使用AWS cdk将基础设施编写为代码的工具。它基本上是一个用于创建云信息模板的元框架。这是一个将 nginx 部署到具有自动缩放功能的负载平衡 ecs fargate 服务的最小示例,但您可以删除最后一个 to 表达式。当您需要更多地控制要启动的内容时,代码会很快变得更加复杂

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

export class NginxStack extends cdk.Stack {

constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
super(scope, id, props);

const vpc = new ec2.VpcNetwork(this, 'MyApiVpc', {
maxAZs: 1
});

const cluster = new ecs.Cluster(this, 'MyApiEcsCluster', {
vpc: vpc
});

const lbfs = new ecs.LoadBalancedFargateService(this, 'MyApiLoadBalancedFargateService', {
cluster: cluster,
cpu: '256',
desiredCount: 1,
// The tag for the docker image is set dynamically by our CI / CD pipeline
image: ecs.ContainerImage.fromDockerHub("nginx"),
memoryMiB: '512',
publicLoadBalancer: true,
containerPort: 80
});

const scaling = lbfs.service.autoScaleTaskCount({
maxCapacity: 5,
minCapacity: 1
});

scaling.scaleOnCpuUtilization('MyApiCpuScaling', {
targetUtilizationPercent: 10
});

}
}

我添加了指向特定 cdk 版本的链接,因为文档的最新版本有点损坏。

关于amazon-web-services - 如何在代码中将 nginx 部署到 AWS fargate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54715452/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com