Skip to main content

用于 AWS Fargate 到 Amazon SQS 集成的 CDK 构造

项目描述

aws-fargate-sqs 模块

---

稳定性:实验

所有类都在积极开发中,并且在任何未来版本中都会进行非向后兼容的更改或删除。这些不受语义版本控制模型的约束。这意味着虽然您可以使用它们,但在升级到此软件包的较新版本时可能需要更新源代码。


参考文档 https://docs.aws.amazon.com/solutions/latest/constructs/
包裹
蟒蛇标志Python aws_solutions_constructs.aws_fargate_sqs
打字稿徽标打字稿 @aws-solutions-constructs/aws-fargate-sqs
爪哇徽标爪哇 software.amazon.awsconstructs.services.fargatesqs

概述

此 AWS 解决方案构造实现了可写入 Amazon SQS 队列的 AWS Fargate 服务

这是一个最小的可部署模式定义:

打字稿

import { Construct } from 'constructs';
import { Stack, StackProps } from 'aws-cdk-lib';
import { FargateToSqs, FargateToSqsProps } from '@aws-solutions-constructs/aws-fargate-sqs';

const constructProps: FargateToSqsProps = {
    publicApi: true,
    ecrRepositoryArn: "arn:aws:ecr:us-east-1:123456789012:repository/your-ecr-repo"
};

new FargateToSqs(this, 'test-construct', constructProps);

Python

from aws_solutions_constructs.aws_fargate_sqs import FargateToSqs, FargateToSqsProps
from aws_cdk import (
    Stack
)
from constructs import Construct

FargateToSqs(self, 'test_construct',
            public_api=True,
            ecr_repository_arn="arn:aws:ecr:us-east-1:123456789012:repository/your-ecr-repo")

爪哇

import software.constructs.Construct;

import software.amazon.awscdk.Stack;
import software.amazon.awscdk.StackProps;
import software.amazon.awsconstructs.services.fargatesqs.*;

new FargateToSqs(this, "test_construct", new FargateToSqsProps.Builder()
        .publicApi(true)
        .ecrRepositoryArn("arn:aws:ecr:us-east-1:123456789012:repository/your-ecr-repo")
        .build());

模式构造道具

姓名 类型 描述
公共API 布尔值 构造是部署私有 API 还是公共 API。这对 VPC 有影响。
vpc 道具? ec2.VpcProps 构造将创建的 VPC 的可选自定义属性。此 VPC 将由构造创建的任何私有托管区域使用(这就是 loadBalancerProps 和 privateHostedZoneProps 不能包含 VPC 的原因)。同时提供 this 和 existingVpc 是错误的。
现有的Vpc? ec2.IVpc 要在其中部署构造的现有 VPC。同时提供 this 和 vpcProps 是错误的。如果客户端提供现有的负载均衡器和/或现有的私有托管区域,则这些构造必须存在于此 VPC 中。
集群道具? ecs.ClusterProps 用于创建新 ECS 集群的可选属性。要提供现有集群,请使用 fargateServiceProps 的集群属性。
ecrRepositoryArn? 细绳 包含用于生成容器的图像的 ECR 存储库的 arn。必须提供 this 或 containerDefinitionProps 的 image 属性。格式:arn:aws:ecr: region : account number :repository/ Repository Name
ecrImage 版本? 细绳 存储库中要使用的映像版本。默认为“最新”
容器定义道具? [ecs.ContainerDefinitionProps 任何]( https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_aws-ecs.ContainerDefinitionProps.html )
fargateTaskDefinitionProps? [ecs.FargateTaskDefinitionProps 任何]( https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_aws-ecs.FargateTaskDefinitionProps.html )
fargateServiceProps? [ecs.FargateServiceProps 任何]( https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_aws-ecs.FargateServiceProps.html )
现有的FargateServiceObject? ecs.FargateService Fargate 服务已实例化(可能由另一个解决方案构造)。如果指定,则不能提供定义新服务的 props,包括:ecrImageVersion、containerDefinitionProps、fargateTaskDefinitionProps、ecrRepositoryArn、fargateServiceProps、clusterProps
现有的ContainerDefinitionObject? ecs.ContainerDefinition 已作为 Fargate 服务的一部分实例化的容器定义。这必须是现有FargateServiceObject 中的容器
现有队列对象? sqs.队列 要使用的可选的现有 SQS 队列,而不是默认队列。同时提供 this 和 queueProps 会导致错误。
队列道具? sqs.QueueProps 可选的用户提供的属性,用于覆盖 SQS 队列的默认属性。
部署死信队列? 布尔值 是否创建辅助队列用作死信队列。默认为true.
死信队列道具? sqs.QueueProps 可选的用户提供的道具来覆盖死信队列的默认道具。仅在deployDeadLetterQueue属性设置为 true 时使用。
最大接收计数? 整数 消息在被移动到死信队列之前可以不成功地出列的次数。默认为15.
queueUrlEnvironmentVariableName? 细绳 容器环境变量的可选名称设置为队列的 URL。默认值:SQS_QUEUE_URL
queueArnEnvironmentVariableName? 细绳 容器环境变量的可选名称设置为队列的 arn。默认值:SQS_QUEUE_ARN
队列权限? string[] 授予 Fargate 服务的可选队列权限。可以指定以下一项或多项:Read, Write. 默认为Write

模式属性

姓名 类型 描述
个人电脑 ec2.IVpc 构造使用的 VPC(无论是由构造创建还是由客户端提供)
服务 ecs.FargateService 此构造使用的 AWS Fargate 服务(无论是由此构造创建还是在初始化时传递给此构造)
容器 ecs.ContainerDefinition 与服务属性中的 AWS Fargate 服务关联的容器。
sqs队列 sqs.队列 返回由模式创建的 SQS 队列的实例。
死信队列? sqs.队列 返回由模式创建的死信队列的实例(如果已部署)。

默认设置

没有任何覆盖的 Construct 的开箱即用实现将设置以下默认值:

AWS Fargate 服务

  • 设置 AWS Fargate 服务

    • 使用现有服务(如果提供)

    • 如果未提供,则创建新服务。

      • 服务将在隔离子网(如果可用)中运行,然后在私有子网(如果可用)中运行,最后在公共子网中运行
    • 使用 SQS 队列的名称将环境变量添加到容器中

    • 向容器 IAM 角色添加权限,允许其发布到 SQS 队列

亚马逊 SQS 队列

  • 设置 Amazon SQS 队列

    • 如果提供了一个现有队列,则使用现有队列,否则创建一个新队列
  • 将接口端点添加到 SQS 的 VPC(该服务默认在独立子网或私有子网中运行)

建筑学

架构图


© 版权所有 2022 Amazon.com, Inc. 或其附属公司。版权所有。

项目详情