其他分享
首页 > 其他分享> > AWS 12 AWS_CLI_SDK_IAM_Roles&Policies

AWS 12 AWS_CLI_SDK_IAM_Roles&Policies

作者:互联网

iam 角色和 策略

策略可以自定义,策略可以自定义内联策略

1. 可以通过policy simulator测试策略
2. 通过CLI进行
---------------------------------------------------------------------------
AWS CLI干运行

•有时,我们只是想确保我们有权限…
•但不是真正运行命令!
•某些AWS CLI命令(如EC2)在以下情况下可能会变得昂贵:
如果我们想创建一个EC2实例,那么就说我们成功了
•一些AWS CLI命令(并非全部)包含一个--dry run选项,用于
模拟API调用

AWS CLI STS解码错误

•当你运行API调用失败时,你会收到一条很长的错误消息
•可以使用STS命令行解码此错误消息:
•sts解码授权信息

•让我们练习!
aws sts decode-authorization-message --encoded-message ~~
解析错误内容

AWS EC2实例元数据
•AWS EC2实例元数据功能强大,但却是鲜为人知的功能之一给开发者
•它允许AWS EC2实例“了解自己”,而无需使用IAM Role就是为了这个目的。
•网址是http://169.254.169.254/latest/meta-data
•您可以从元数据中检索IAM角色名称,但不能检索IAM策略。
•元数据=关于EC2实例的信息
•Userdata=EC2实例的启动脚本

•让我们练习一下,看看我们能用它做些什么!

带CLI的MFA
•要在CLI中使用MFA,必须创建临时会话
•为此,必须运行STS GetSessionToken API调用
•aws sts获取会话令牌——mfa设备的序列号arn——令牌代码来自令牌——持续时间3600秒
aws sts get-session-token
--serial-number arn-of-the-mfa-device
--tokencode-code-from-token
--duration-seconds 3600
---------------------------------------------------------------------------

AWS SDK概述

•如果您想直接从应用程序在AWS上执行操作,该怎么办(不使用CLI)。
•您可以使用SDK(软件开发工具包)!
•官方SDK是…
•java
•.net
•node.js
•PHP
•Python(名为boto3/botocore)
•Go
•ruby
•C++

AWS SDK概述
•在针对AWS服务进行编码时,我们必须使用AWS SDK,例如作为DynamoDB
•有趣的事实……AWS CLI使用Python SDK(boto3)
•考试要求你知道什么时候应该使用SDK
•我们将在学习Lambda函数时练习AWS SDK

•好消息:如果没有指定或配置默认区域,则
默认情况下将选择us-east-1

AWS限制(配额)
•API速率限制
•EC2的DescribeInstances API限制为每秒100次调用
•S3上的GetObject对每个前缀每秒的GET限制为5500
•对于间歇性错误:实施指数退避Exponential Backoff
•对于一致性错误:请求API节流限制增加

•服务配额(服务限制)Service Quotas
•按需运行标准实例:1152个vCPU
•你可以通过开罚单申请增加服务限额
•您可以使用服务配额API请求增加服务配额Service Quotas

指数退避(任何AWS服务)
•如果间歇性(ThrottlingException)出现节流异常,请使用指数退避
•AWS SDK API调用中已包含重试机制
•如果按原样或在特定情况下使用AWS API,则必须自行实施
•必须仅在5xx服务器错误和限制上执行重试
•不要在4xx客户端上执行错误
---------------------------------------------------------------------------
AWS CLI凭据提供程序链

•CLI将按此顺序查找凭据

1.命令行选项--region、-output和--profile
2.环境变量–AWS_AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,and AWS_SESSION_TOKEN
3.CLI凭据文件–aws配置
~/.aws/credentials on Linux / Mac & C:\Users\user\.aws\credentials on Windows
4.CLI配置文件–aws配置
~/.aws/config on Linux / macOS & C:\Users\USERNAME\.aws\config on Windows
5.容器凭据–用于ECS任务
6.实例配置文件凭据–用于EC2实例配置文件

AWS SDK默认凭据提供程序链
•Java SDK(示例)将按以下顺序查找凭据
1.Java系统属性–aws.accessKeyId and aws.secretKey
2.环境变量-AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
3.默认凭证配置文件–例如:ex at: ~/.aws/credentials, shared by many SDK
4.亚马逊ECS容器凭据–用于ECS容器
5.实例配置文件凭据–用于EC2实例

AWS凭据场景
•部署在EC2实例上的应用程序正在使用环境变量
使用IAM用户的凭据调用Amazon S3 API。
•IAM用户具有完全访问权限。
•应用程序只使用一个S3存储桶,因此根据最佳实践:
•为EC2实例创建了IAM角色和EC2实例配置文件
•为角色分配了访问该S3存储桶的最低权限
•IAM实例配置文件已分配给EC2实例,但仍有访问所有S3存储桶。为什么?
证书链仍在优先考虑环境变量

AWS认证最佳实践
•总的来说,永远不要在代码中存储AWS凭据
•最佳实践是从凭证链继承凭证
•如果在AWS内工作,请使用IAM角色
•=>EC2实例的EC2实例角色
•=>ECS任务的ECS角色
•=>Lambda函数的Lambda角色
•如果在AWS之外工作,请使用环境变量/命名配置文件
---------------------------------------------------------------------------

签署AWS API请求

•当您调用AWS HTTP API时,您对请求进行签名,以便AWS
可以使用AWS凭据(访问密钥和密钥)识别您的身份
•注意:一些对Amazon S3的请求不需要签名
•如果使用SDK或CLI,HTTP请求将为您签名
•您应该使用签名v4(SigV4)签署AWS HTTP请求
HTTP Header option/Query String option (ex: S3 pre-signed URLs)
---------------------------------------------------------------------------

标签:IAM,12,CLI,AWS,实例,EC2,API,SDK
来源: https://www.cnblogs.com/ives-xu/p/16133452.html