ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

AWS 12 AWS_CLI_SDK_IAM_Roles&Policies

2022-04-12 08:33:13  阅读:208  来源: 互联网

标签:IAM 12 CLI AWS 实例 EC2 API SDK


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有