aws(学习笔记第三十五课) aws service connect with ecs/ecr

aws(学习笔记第三十五课) aws service connect with ecs/ecr

  • ecs使用aws service connectecs

学习内容:

  • 使用aws service connect
  • 使用ecsecr

1. 整体架构

1.1 代码链接

代码链接(ecs-serviceconnect)

1.2 整体架构

在这里插入图片描述
整体分为EcrStackEcsStack两个主要stack

  • EcrStack负责构成docker容器。
  • EcsStack负责构成fargateservice
  • fargateservice分为frontendbackend
    • frontend是负责前端展示的project
    • backend是负责后端展示的project

1.2 执行环境

这里,windows本地安装docker有些问题,但是整个cdk工程需要docker进行本的的docker build,所以windowsdepoly失败。这里采用cloudshell进行练习。

2. 代码解析

2.1 CdkExamplesServiceConnectStack.py整体入口

2.1.1 创建vpc
super().__init__(scope, construct_id, **kwargs)
        # Creating a shared VPC with public subnets and private subnets with NAT Gateways
        vpc = ec2.Vpc(self, "ServiceConnectVPC",
                    ip_addresses=ec2.IpAddresses.cidr("10.0.0.0/16"),
                    create_internet_gateway=True,
                    max_azs=2,
                    nat_gateways=2,
                    enable_dns_hostnames=True,
                    enable_dns_support=True,
                    vpc_name="App-Mesh-VPC",
                    subnet_configuration=[
                        ec2.SubnetConfiguration(
                            subnet_type=ec2.SubnetType.PUBLIC,
                            name="Public",
                            cidr_mask=24
                        ),
                        ec2.SubnetConfiguration(
                            subnet_type=ec2.SubnetType.PRIVATE_WITH_EGRESS,
                            name="Private",
                            cidr_mask=24
                        )
                    ]
                    )
2.1.2 创建nested stacks
AWSRegion=Stack.of(self).region
        AWSStackId=Stack.of(self).stack_id
        ecr_stack = EcrStack(self, "EcrStack")
        ecs_stack = EcsStack(self, "EcsStack", vpc=vpc, frontend_repository=ecr_stack.frontend_docker_asset, backend_data_repository=ecr_stack.backend_data_docker_asset)

注意,这里在整体的CdkExamplesServiceConnectStack里面,可以继续嵌套调用nested stack。但是需要继承NestedStack父类

class EcrStack(NestedStack):
class EcsStack(NestedStack):

2.2 ecr_stack.py创建docker image

2.2.1 创建repository(docker image)
super().__init__(scope, id,  **kwargs )
        # Creates two ecr repositories that will host the docker images for the color teller gateway app and color teller app
        FrontendRepository = ecr.Repository(self, "FrontendRepository", repository_name="frontend")
        BackendDataRepository = ecr.Repository(self, "BackendDataRepository", repository_name="backend_data")

        # The docker images were built on a M1 Macbook Pro, you may have to rebuild your images
        frontendAsset = DockerImageAsset(self, "frontendAsset",
            directory="./services/frontend",
            build_args={
   
   
                "SERVICE_B_URL_BUILD_ARG": "data.scapp.local" # This argument will be passed to the dockerfile and is the URL that the frontend app will use to call the backend
            },  
            platform=Platform.LINUX_AMD64
        )
        dataAsset = DockerImageAsset(self, "dataAsset",
            directory="./services/data",
        )
        
        # Deploying images to ECR
        ecrdeploy.ECRDeployment(self, "DeployFrontendImage",
            src=ecrdeploy.DockerImageName(frontendAsset.image_uri),
            dest=ecrdeploy.DockerImageName(f"{
     
     Aws.ACCOUNT_ID}.dkr.ecr.{
     
     Aws.REGION}.amazonaws.com/frontend:latest")
        )
        
        ecrdeploy.ECRDeployment(self, "DeployBackendImage",
            src=ecrdeploy.DockerImageName(dataAsset
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sealaugh32

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值