aws cloudformation 堆栈集的创建和使用

news2024/12/24 20:23:45

资料

  • 使用 AWS CloudFormation StackSets 跨多个 AWS 账户和区域配置资源
  • AWS cloudformation示例模板
  • 堆栈集堆栈实例状态原因

很多组织使用大量的 AWS 账户,通常用 AWS Organizations 将这些账户组织为分层结构,分组为不同的组织部门 (OU)。并且希望确保每一个新账户都按照其内部标准进行设置,需要一致、可靠地设置 IAM 用户和角色、VPC 和 VPC 子网、安全组、配置规则、日志记录和 AWS Lambda 函数。cfn的stackset可以实现这一功能。

             堆栈集是在模板中定义的并跨一个或多个区域部署到一个或多个账户中的资源的集合。

概念的区分

使用stackset,涉及到**stack sets(堆栈集),stack instances(堆栈实例),stacks(堆栈)**的概念

管理账户创建堆栈集,在目标账户中部署,更新和删除堆栈,需要在管理和目标账户之间建立信任关系

权限模型,分为自管理权限和服务管理权限

  • 自管理权限,用户自行维护创建stackset所需的iam角色,在账户之间建立信任关系
  • 服务管理权限,通过aws organization服务自动创建角色和信任关系

堆栈集不能跨region,堆栈实例是对目标账户中堆栈的引用,和堆栈集是多对一关系

堆栈集、堆栈操作和堆栈之间的逻辑关系

先决条件

需要在管理账户和目标账户进行配置,中国区只能使用自管理权限

Enabling trusted access with Amazon Organizations for Amazon CloudFormation StackSets isn’t currently supported in the China Beijing and Ningxia Regions.

账户的角色命名是强制规范的

The role in your administrator account should be named AWSCloudFormationStackSetAdministrationRole. The role in each of your target accounts should be named AWSCloudFormationStackSetExecutionRole.

在管理员账户和目标账户之间建立信任关系。然后,管理员账户中的任何用户可以创建任何堆栈集

1.在管理账户创建AWSCloudFormationStackSetAdministrationRole角色

可以直接使用以下命令使用cfn模板快速创建

aws cloudformation create-stack \
--stack-name MyStacksetAdminRole \
--template-url https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetAdministrationRole.yml \
--capabilities CAPABILITY_NAMED_IAM

2.在目标账户创建AWSCloudFormationStackSetExecutionRole角色

使用以下命令在目标账户中配置角色,需要加入额外参数AdministratorAccountId指定管理账户

目标账户的对应角色需要权限来执行cfn堆栈操作,模板中指定为admin

可以在权限中进一步限制可以使用的资源和可以assume到该角色的主体

aws cloudformation create-stack \
--stack-name MyStacksetExecRole \
--template-url https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetExecutionRole.yml \
--capabilities CAPABILITY_NAMED_IAM \
--parameter ParameterKey=AdministratorAccountId,ParameterValue=xxxxxxxx \
--profile group

使用堆栈集

我们使用简单的s3桶来测试堆栈实例的资源创建

AWSTemplateFormatVersion: "2010-09-09"

Resources:
  S3Bucket:
    Type: AWS::S3::Bucket
    Properties:
      VersioningConfiguration:
        Status: Suspended
      PublicAccessBlockConfiguration:
        BlockPublicAcls: true
        BlockPublicPolicy: true
        IgnorePublicAcls: true
        RestrictPublicBuckets: true
      BucketEncryption:
        ServerSideEncryptionConfiguration:
          - ServerSideEncryptionByDefault:
              SSEAlgorithm: AES256

在管理账户部署堆栈集

aws cloudformation create-stack-set --stack-set-name my-awsconfig-stackset --template-url https://xxxx.s3.cn-north-1.amazonaws.com.cn/cfn/resources.yaml

管理账户堆栈状态

aws cloudformation list-stack-sets
{
    "Summaries": [
        {
            "StackSetName": "test-stackset",
            "StackSetId": "test-stackset:73c2d435-0b3a-40d2-a2ca-ee95c0005bb0",
            "Description": "test-stackset",
            "Status": "ACTIVE",
            "DriftStatus": "NOT_CHECKED"
        },
}

在这里插入图片描述

目标账户堆栈状态

在这里插入图片描述

偏差检测

将上一步在目标账户创建的资源删除,之后在管理账户检测偏差,这项操作最终会在目标账户执行,检测到s3桶被删除并返回结果到stackset中

Inactive
Drift status
DRIFTED
1/1 drifted
Last drift check time
2022-11-29 12:58:15 UTC+0800

执行偏差检测的逻辑

When CloudFormation performs drift detection on a stack set, it performs drift detection on the stack associated with each stack instance in the stack set. To do this, CloudFormation compares the current state of each resource in the stack with the expected state of that resource, as defined in the stack’s template and any specified input parameters. If the current state of a resource varies from its expected state, that resource is considered to have drifted. If one or more resources in a stack have drifted, then the stack itself is considered to have drifted, and the stack instances that the stack is associated with is considered to have drifted as well. If one or more stack instances in a stack set have drifted, the stack set itself is considered to have drifted.

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/46450.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Teams app 的 SSO 机制

我们来继续我们的 Teams sample 之旅,上一个讲了 Tab app,那我们这里再深入一步,看一下如何使用 sso 机制。 sso 是一个很有用机制,它可以让我们的 teams app 能获取当前用户的身份。sso 很多时候比较难彻底理解,在开…

刷爆力扣之公平的糖果交换

刷爆力扣之公平的糖果交换 HELLO,各位看官大大好,我是阿呆 🙈🙈🙈 今天阿呆继续记录下力扣刷题过程,收录在专栏算法中 😜😜😜 该专栏按照不同类别标签进行刷题&#xff…

【数据链路层】循环冗余码CRC、后退N帧协议GBN、选择重传协议SR、CSMA/CA

文章目录循环冗余码CRC多帧滑动窗口连续ARQ协议后退N帧协议GBN选择重传协议SRCSMA/CA---针对无线局域网处理隐蔽站问题RTS,CTS循环冗余码CRC /*** 计算CRC16校验码** param bytes* return* [1,3,4,1,205,1,18,235,173]*/public static String CRC16(byte[] bytes) {…

终于见识到了微服务的天花板!SpringCloud全线手册,太强了

后台都是在问微服务架构的面试题怎么答,想聊聊微服务架构了。微服务架构一跃成为 IT 领域炙手可热的话题也就这两年的事,大量一线互联网公司因为庞大的业务体量和业务需求,纷纷投入了微服务架构的建设中,像阿里巴巴、百度、美团等…

Kamiya丨Kamiya艾美捷大鼠微量白蛋白酶联免疫吸附试验说明书

Kamiya艾美捷大鼠微量白蛋白酶联免疫吸附试验预期用途: 大鼠微量白蛋白酶联免疫吸附试验(ELISA)是一种高灵敏度的双位点酶联免疫吸附试验(ELISA)大鼠生物样品中微量白蛋白的测定。仅供研究使用。 引言 白蛋白&#x…

Java项目:ssm学生学籍管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 SSM项目-学生学籍管理系统。该项目分管理员、老师、学生三种用户角色。每种角色分别对应不同的菜单; 以下分别介绍各个角色对应的功…

[附源码]计算机毕业设计springboot基于Java的日用品在线电商平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

二进制数据的贝叶斯非参数聚类算法(Matlab代码实现)

目录 💥1 概述 📚2 部分运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 利用图像结构信息是字典学习的难点,针对传统非参数贝叶斯算法对图像结构信息利用不充分,以及算法运行效率低下的问题,该文…

GoLand2022.2.5版本Hello调动Greetings包

安装Goland2022.2.5 版本 1.官网下载goland-2022.2.5.dmg版本(Mac)版本。如果是windows版本也可以直接下载) 2.配置gopath,基本都是配置.我这里配置为/usr/local/go 作为全目录,如果是windows,直接在环境中配置path路…

Mysql基础知识篇(二)

1.UNION 与 UNION ALL 的区别? 如果使用 UNION,会在表链接后筛选掉重复的记录行如果使用 UNION ALL,不会合并重复的记录行从效率上说,UNION ALL 要比 UNION 快很多,如果合并没有刻意要删除重复行,那么就使…

自动化测试框架

自动化测试框架1.自动化测试框架核心功能1.数据驱动2.页面驱动3.关键字驱动2.关键字驱动实现-文档形式3.关键字驱动实现-表格形式1.自动化测试框架核心功能 这三种驱动测试可以结合使用来完成系统的自动化测试。可以将测试数据 1.数据驱动 将测试代码和测试数据分离&#xff…

科技云报道:云计算走向工业互联网“深水区”

科技云报道原创。 在新科技革命中,将网格化、信息化与智能化深度融合的工业互联网,正在将人、机、物全面互联,实现全要素、全产业链、全价值链的连接,推动传统产业加快转型升级、助力新兴产业加速发展壮大。 工业如何在快速变革…

培训机构借助创客匠人发力线上业务

疫情反反复复,传统线下教学受到严重影响,转型线上、借力线上发展业务成为行业主流趋势。但是,没有线上经验,人手不足的线下教培机构是否可以转型线上做教学服务,实现招生引流呢? 答案是——可以!用对工具,选对模式,其实很简单! 有很多没有专门线上运营团队,甚至是…

《计算机体系结构量化研究方法》1.7 可信任度

主要内容 计算机是在不同的抽象层上设计和构造的。我们可以逐级深入计算机的不同层面,将每个组件放大为一个完整的子系统进行查看,直到深入到独立的晶体管为止。尽管有些故障会波及整个系统,比如掉电,但许多故障可以被限制在模块…

leetcode-每日一题-1758-生成交替二进制字符串的最少操作数(简单,数学思想)

这道题标记为简单题是正常的,因为当你想到0或者1开头的时候就已经结束了看看我的分析 那么知道这个信息之后就很简单了,加上我们的位运算符号^作为标记即可,大家看看代码实现 1758. 生成交替二进制字符串的最少操作数 难度简单88收藏分享切换…

R语言和Tableau通过情感分析,我们可以从特朗普的推文得到什么?

社交媒体分析的许多用途中的一些是情绪分析,我们评估特定问题的帖子是积极还是消极。我们把社交媒体分析、机器学习、预测建模等集成到文本数据挖掘中。最近我们被客户要求撰写关于推文的研究报告,包括一些图形和统计输出。 在这篇文章中,我…

使用React.ts创建一个密码生成器的简单示例

目录密码生成器DemoFeature知识点React TypeScript —— Function Components为元素(::before/::after)绑定点击事件React如何正确定义对象数组在React中设置复选框check属性三目运算符实现React动态绑定class和style参考资料密码生成器Demo 使用密码生成器工具创建随机密码。P…

Java基于springboot +vue网上超市购物网站 多商家

随着我国信息化的发展,大家更多的是希望通过网络获取到更多的直接所需的信息,而商品一直以来就是人类永恒的追求之一,如何能够享有到更多的商品是很多人一直以来关系的问题。 本系统通过在线网购的方式让用户可以在需要购买商品但是有没有时间…

git submodule创建子仓库

git submodule创建子仓库 文章目录git submodule创建子仓库简介创建主仓库创建子仓库将子仓库添加到主仓库中将合并后的主仓库提交推送到云端简介 当我们的项目伴随着时间的增长越来越大的时候,单一的仓库便不再方便管理,这时候就需要将部分功能提取出来…

PyQt5 事件处理机制

PyQt5 事件处理机制PyQt为事件处理提供了两种机制:高级的信号与槽机制,以及低级的事件处理机制。信号与槽可以说是对事件处理机制的高级封装。 常见事件类型: 键盘事件:按键按下和松开。鼠标事件:鼠标指针移动&#x…