我启动了一个ec2实例,并为该实例创建了具有完整S3访问策略的角色。我在上面安装了awscli并配置了用户的访问密钥。我的用户也具有管理员访问权限和完整的S3访问策略。我可以在aws控制台中看到存储分区,但是当我尝试在实例上运行aws s3 ls
时,它返回了An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
。
我还需要做些什么才能为角色或用户正确添加权限,以便能够在S3和实例之间列出和同步对象?
答案 0 :(得分:1)
不仅从CLI还会发生此问题,例如在执行S3 API时也会发生。
此错误的原因可能是由于对存储桶的访问权限配置错误。
例如,在下面的设置中,您具有对存储桶的内部对象执行操作的完整权限,但未在存储桶本身上指定任何操作:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::<name-of-bucket>/*"
]
}
]
}
这将导致提到的
调用ListBuckets时...(AccessDenied)...
错误。
为了解决此问题,您应该允许应用程序访问存储桶(第一个语句项)并编辑存储桶中的所有对象(第二个语句项):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<name-of-bucket>"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::<name-of-bucket>/*"
]
}
]
}
有一些较短的配置可以解决该问题,但是上面指定的配置也试图保留细粒度的安全权限。
答案 1 :(得分:0)
何时使用 IAM用户和 IAM角色似乎有些混乱。
使用 Amazon EC2实例时,授予权限的最佳方法是:
aws configure
。如果您想授予您自己的(非EC2)计算机的权限,则:
aws configure
,然后输入与IAM用户关联的访问密钥和秘密密钥。这会将凭据存储在~/.aws/credentials
中。credentials
文件中的凭据答案 2 :(得分:0)
结果是我忘记了必须做mfa才能获得访问令牌才能在S3中运行。谢谢大家的回应。
答案 3 :(得分:0)
我也遇到了这个问题。
我跑了aws sts get-caller-identity
,发现Arn与我的期望不符。事实证明,如果您在bash_profile
或bashrc
中设置了AWS配置,则awscli将默认使用这些配置。
我将bash_profile
和bashrc
中的环境变量更改为正确的键,一切开始正常工作。
答案 4 :(得分:0)
创建具有权限的IAM用户。
<?php
$status11=disabled;
if(htmlentities($result->aba11)==null){
$status11=enabled;
}
?>
<td><input type="datetime-local" name="aba11" id="aba11" value="<?php echo htmlentities($result->aba11);?>" class="form-control" <?php echo $status11?> ></td>
<?php
$status12=disabled;
if(htmlentities($result->aba11)!=null and htmlentities($result->aba12)== null ){
$status12=enabled;
}
?>
<td><input type="datetime-local" name="aba12" onkeydown="upperCaseF(this)" value="<?php echo htmlentities($result->aba12);?>" class="form-control" <?php echo $status12?>></td>
<td><input type="text" name="aba13" onkeydown="upperCaseF(this)" value="<?php echo htmlentities($result->aba13);?>" class="form-control"></td>
</tr>
<tr>
<th class= "col-md-1.5" align="centre">0.0.1M NaOH</th>
<th class= "col-md-2" align="centre">60 Degree C</th>
<td><input type="datetime-local" name="aba21"onkeydown="upperCaseF(this)" value="<?php echo htmlentities($result->aba21);?>" class="form-control" ></td>
<td><input type="datetime-local" name="aba22" onkeydown="upperCaseF(this)" value="<?php echo htmlentities($result->aba22);?>" class="form-control" ></td>
<td><input type="text" name="aba23" onkeydown="upperCaseF(this)" value="<?php echo htmlentities($result->aba23);?>" class="form-control" ></td>
</tr>
<tr>
<th class= "col-md-1.5" align="centre">0.5M HCL</th>
<th class= "col-md-2" align="centre">60 Degree C</th>
<td><input type="datetime-local" name="aba31" onkeydown="upperCaseF(this)" value="<?php echo htmlentities($result->aba31);?>" class="form-control" ></td>
<td><input type="datetime-local" name="aba32" onkeydown="upperCaseF(this)" value="<?php echo htmlentities($result->aba32);?>" class="form-control" ></td>
<td><input type="text" name="aba33" onkeydown="upperCaseF(this)" value="<?php echo htmlentities($result->aba33);?>" class="form-control"></td>
</tr>
<tr>
<th class= "col-md-1.5" align="centre">Freeze Drying</th>
<th class= "col-md-2" align="centre"> </th>
<td><input type="datetime-local" name="aba41" onkeydown="upperCaseF(this)" value="<?php echo htmlentities($result->aba41);?>" class="form-control" ></td>
<td><input type="datetime-local" name="aba42" onkeydown="upperCaseF(this)" value="<?php echo htmlentities($result->aba42);?>" class="form-control" ></td>
<td><input type="text" name="aba43" onkeydown="upperCaseF(this)" value="<?php echo htmlentities($result->aba43);?>" class="form-control"></td>
</tr>
</table>
保存访问密钥ID和秘密访问密钥。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucketName/*"
}
]
}