- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
IAM 有一个名为 Simple Token Service (STS)
的服务组件。它允许您通过 SDK/API 创建临时访问权限以访问 AWS 资源,而无需创建专用凭证。这些 STS 代币具有用户定义的生命周期,这些代币会在之后被销毁。人们使用此服务从移动设备(例如 Android/IOS 应用程序)访问内容。
但是我不知道如何使用这个服务。
感谢任何帮助或支持。
谢谢
最佳答案
STS 和 IAM 齐头并进,使用起来非常简单。由于您没有给出用例,在我们开始编码之前,请允许我解释一些事情。
注意:我是用PHP编写的,SDK版本是3。
STS 的想法是创建一些 token
,允许持有者执行某些操作而无需您(所有者或受让人)损害您自己的凭据。您要使用哪种类型的 STS 取决于您要做什么。 Possible actions are listed here .
E.g.1: Typically, you use
AssumeRole
for cross-account access or federation. Imagine that you own multiple accounts and need to access resources in each account. You could create long-term credentials in each account to access those resources. However, managing all those credentials and remembering which one can access which account can be time consuming. Instead, you can create one set of long-term credentials in one account and then use temporary security credentials to access all the other accounts by assuming roles in those accounts.E.g.2: Typically, you use
GetSessionToken
if you want to use MFA to protect programmatic calls to specific AWS APIs like Amazon EC2 StopInstances.
假设您有一个 IAM 用户,并且您想要为该用户创建许多临时凭证,每个凭证的时间范围为 15 分钟。然后您将编写以下代码:
$stsClient = \Aws\Laravel\AwsFacade::createClient('sts', array(
'region' => 'us-east-1'
));
$awsTempCreds = $stsClient->getSessionToken(array(
'DurationSeconds' => 900
));
注意事项:
AWS Facade
获取 $stsClient
,它是 Laravel 框架的一部分。如何通过传递凭据来获取 $stsClient
取决于您。阅读此 installation guide关于如何实例化您的 $stsClient
。STS
是全局资源,即它不需要您位于特定区域,因此您必须始终将区域设置为 us-east-1
。如果您的区域设置为任何其他区域,您将收到类似 should be scoped to a valid region, not 'us-west-1'
的错误。Account/IAM
相同的权限。以上代码为 AWS 账户或 IAM 用户返回一组临时凭证。凭证由访问 key ID、 secret 访问 key 和安全 token 以及一些其他信息(例如到期时间)组成。
您现在可以将这些临时凭证提供给其他人。假设我把这个给了我的 friend ,他碰巧使用了 Javascript API
。他现在可以编写这样的代码:
<script>
var accessKey = '<?php echo $credentials["AccessKeyId"] ?>';
var accessToken = '<?php echo $credentials["SecretAccessKey"] ?>';
var accessSessionToken = '<?php echo $credentials["SessionToken"] ?>';
AWS.config.update({
credentials: {
accessKeyId: accessKey,
secretAccessKey: accessToken,
sessionToken: accessSessionToken
},
region: 'us-east-1'
});
var bucket = new AWS.S3();
var file = fileChooser.files[0];
var params = {Bucket: 'mybucket', Key: file.name, ContentType: file.type, Body: file};
bucket.upload(params, function (err, data) {
results.innerHTML = err ? 'ERROR!' : 'UPLOADED.';
}).on('httpUploadProgress', function(evt) {
console.log('Progress:', evt.loaded, '/', evt.total);
});
</script>
这个脚本做什么?
Multipart Upload
将一个非常大的文件(超过 100MB)上传到 mybucket
。同样,只要您的临时凭证有权执行此操作,您就可以对任何 AWS 资源执行操作。希望这对您有所帮助。
关于amazon-ec2 - 我如何在 AWS 中使用 IAM 来提供临时安全凭证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22034090/
尽管我的 EC2 实例(带有针对 ECS 优化的 AIM)正在运行 ecs 代理,但容器并未在我的 EC2 中启动。为了确认 ecs-agent 正在我的 EC2 实例上运行,我检查了: ecs 日志
我想在一个任务定义中使用客户端和服务器在 aws ecs 中运行套接字程序。当我使用 awsvpc 网络模式并每次连接到本地主机上的服务器时,我都可以运行它。这很好,所以我不需要知道服务器的 IP 地
我有一个在 AWS ECS 上运行的 Docker 容器。我不想要负载均衡器,因为容器是用来处理 websocket 连接的。 https://aws.amazon.com/getting-start
我想在我的 AWS ECS/Fargate 集群上的公共(public) Docker 镜像中启动交互式 shell,以便从集群内部运行网络/连接测试。 似乎官方的方法是使用 aws ecs run-
我在 ECS Fargate 上托管了一个 Shiny 的应用程序。它运行得相当好,但偶尔在使用该应用程序时它会崩溃。我在事件选项卡中将其追溯到以下内容: service YYYY has start
在 AWS ECS 中创建容量提供程序时。我们正在填充的值 Target capacity %,在超过这个值后我们的集群缩小,但我很好奇当前集群的这个值是如何计算的,如果我想检查当前的是什么集群的值(
在 AWS ECS 中创建容量提供程序时。我们正在填充的值 Target capacity %,在超过这个值后我们的集群缩小,但我很好奇当前集群的这个值是如何计算的,如果我想检查当前的是什么集群的值(
我在 AWS 上设置了具有多个目标组和应用程序负载均衡器的 Fargate ecs 服务。它按预期运行。 然后我尝试使用本教程设置管道 https://docs.aws.amazon.com/Amaz
我有一个运行任务的 ECS 集群服务,可以使用 AWS 控制台查看其 Cloudwatch 日志流。 如何为 awslogs-stream-prefix 设置日期,因为我想按日期识别日志流。 "c
我正在使用两个容器部署 ECS Fargate 任务:1 个反向代理 nginx 和 1 个 python 服务器。对于每个我有一个 ECR 存储库,我有一个 CI/CD CodePipeline 设
我在 AWS ECS 上部署了一个 CloudFormation 堆栈,比如 teststack , 通过命令 aws cloudformation deploy --template-file ./
我这里有一些具体的用例。我需要自动扩展在 ECS Fargate 上运行的分布式 Web 应用程序。问题是所有节点都需要在内存中保留相同的数据(因此增加节点数量无助于内存压力)。因此,只有在水平(添加
我正在寻找有关为 ECS 任务分配内存的指南。我正在为希望在服务器成本上尽可能便宜的客户运行 Rails 应用程序。我正在查看具有 2 个 CPU 和 4 GB 内存的中等服务器大小。 大多数情况下,
我是 ECS 新手,我正在尝试使用 Cloudformation 部署它。 我通过查看文档以及从博客和一些文章中找到的一些示例来制作以下 cloudformation 模板。 但是,由于某种原因,它在
也许这很愚蠢,但如果我创建一个 ECS 任务定义(例如参见 https://aws.amazon.com/blogs/compute/better-together-amazon-ecs-and-aw
ECS 的容器定义允许您指定 memoryReservation对于每个容器: The soft limit (in MiB) of memory to reserve for the contain
我在 ca-central 区域创建了一个 AWS ECS 实例。它与每次更新服务时都会更改的动态公共(public) ip 一起使用。到目前为止一切都很好。 由于需要一个公网静态IP,所以我在同一区
Invalid 'containerPort' setting for container 'prerenderContainer'.(Service: AmazonECS; Status Code:
如果我在 ECS 服务级别进行自动扩展,我看不到使用容量提供程序扩展 ECS 集群的意义: https://docs.aws.amazon.com/AmazonECS/latest/developer
关闭。这个问题不符合 Stack Overflow guidelines 。它目前不接受答案。 想改进这个问题?更新问题,使其成为 Stack Overflow 的 on-topic。 1年前关闭。
我是一名优秀的程序员,十分优秀!