如何使用 AWS ECS 启用 EBS 加密
How enable EBS encryption with AWS ECS
我正在尝试使用 EC2 实例类型设置 ECS 集群。我的要求是加密 ECS 集群使用的 EBS 卷。但是,在创建 ECS 集群期间,我看不到 select 加密 EBS 的选项。我只看到在实例配置下提供 EBS 卷大小的选项:
在ECS集群中EBS加密还有其他方法吗?
您可以使用 EC2 console/CLI/CloudFormation/etc 创建实例并将创建的实例加入 ECS 集群,而不是使用 ECS 控制台创建实例。这样您就可以完全控制实例选项和内容,包括指定 EBS 加密。
您将需要使用 Amazon ECS 优化的 AMI 来启动实例,您可以通过将以下内容添加到 UserData 来加入集群:
#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
这里有完整的细节:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_container_instance.html
如评论中所述,接受的答案不是最佳解决方案,因为它既不具有可扩展性,也不具有弹性。
另一种方法是创建一个 CloudFormation
模板,并根据自定义 AWS::EC2::LaunchTemplate
使用 AWS::AutoScaling::AutoScalingGroup
,您可以在其中指定底层 EC2 实例的属性,包括加密EBS 卷。 EC2 实例上的 UserData 脚本应在您的 ECS 集群中自行注册。
ECSLaunchTemplate:
Type: AWS::EC2::LaunchTemplate
Properties:
LaunchTemplateName: !Sub ${AWS::StackName}-lt
LaunchTemplateData:
ImageId: !Ref ImageAMI
InstanceType: !Ref InstanceType
BlockDeviceMappings:
- DeviceName: /dev/xvda
Ebs:
DeleteOnTermination: True
Encrypted: True
VolumeType: gp2
VolumeSize: 30
ECSAutoScalingGroup:
DependsOn: ECSCluster
Type: AWS::AutoScaling::AutoScalingGroup
Properties:
LaunchTemplate:
LaunchTemplateId: !Ref ECSLaunchTemplate
Version: !GetAtt ECSLaunchTemplate.LatestVersionNumber
我已经在互联网上搜索以使其正常工作并遵循了所有文档。我发现至少另一个人有这个问题,并且可以通过在 docker 中手动创建卷来解决。看:
https://github.com/rexray/rexray/issues/1363
另一个选项,我刚刚确认有效,您可以默认为您所在区域中的 EBS 卷启用加密。
见https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html
我正在尝试使用 EC2 实例类型设置 ECS 集群。我的要求是加密 ECS 集群使用的 EBS 卷。但是,在创建 ECS 集群期间,我看不到 select 加密 EBS 的选项。我只看到在实例配置下提供 EBS 卷大小的选项:
在ECS集群中EBS加密还有其他方法吗?
您可以使用 EC2 console/CLI/CloudFormation/etc 创建实例并将创建的实例加入 ECS 集群,而不是使用 ECS 控制台创建实例。这样您就可以完全控制实例选项和内容,包括指定 EBS 加密。
您将需要使用 Amazon ECS 优化的 AMI 来启动实例,您可以通过将以下内容添加到 UserData 来加入集群:
#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
这里有完整的细节:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_container_instance.html
如评论中所述,接受的答案不是最佳解决方案,因为它既不具有可扩展性,也不具有弹性。
另一种方法是创建一个 CloudFormation
模板,并根据自定义 AWS::EC2::LaunchTemplate
使用 AWS::AutoScaling::AutoScalingGroup
,您可以在其中指定底层 EC2 实例的属性,包括加密EBS 卷。 EC2 实例上的 UserData 脚本应在您的 ECS 集群中自行注册。
ECSLaunchTemplate:
Type: AWS::EC2::LaunchTemplate
Properties:
LaunchTemplateName: !Sub ${AWS::StackName}-lt
LaunchTemplateData:
ImageId: !Ref ImageAMI
InstanceType: !Ref InstanceType
BlockDeviceMappings:
- DeviceName: /dev/xvda
Ebs:
DeleteOnTermination: True
Encrypted: True
VolumeType: gp2
VolumeSize: 30
ECSAutoScalingGroup:
DependsOn: ECSCluster
Type: AWS::AutoScaling::AutoScalingGroup
Properties:
LaunchTemplate:
LaunchTemplateId: !Ref ECSLaunchTemplate
Version: !GetAtt ECSLaunchTemplate.LatestVersionNumber
我已经在互联网上搜索以使其正常工作并遵循了所有文档。我发现至少另一个人有这个问题,并且可以通过在 docker 中手动创建卷来解决。看: https://github.com/rexray/rexray/issues/1363
另一个选项,我刚刚确认有效,您可以默认为您所在区域中的 EBS 卷启用加密。
见https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html