我有两个AWS账户。帐户1有一个CloudSearch域,我需要从帐户2中的Lambda函数查询该域。我遵循了一个教程,在Account1中创建一个允许跨帐户访问的角色。
因此,在帐户1中,我有一个角色arn:aws:iam::111111111:role/my_cloudsearch\u query\u role
,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "cloudsearch:search",
"Resource": "*"
}
]
}
此角色有一个受信任的实体,即帐户2,我可以在IAM控制台中该角色的受信任实体部分下看到正确的帐户ID。
在帐户2中,我创建了一个Lambda函数,其执行角色如下所示:
{
"roleName": "my_cloudsearch_query_role",
"policies": [
{
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::111111111111:role/my_cloudsearch_query_role"
}
]
},
"name": "oneClick_lambda_basic_execution_1526469274620",
"type": "inline"
}
]
}
我的Lambda函数(Python 3)代码试图像这样查询CloudSearch:
client = boto3.client('cloudsearchdomain', endpoint_url=endpoint)
response = client.search(
query="(and name:'foobar')",
queryParser='structured',
returnFields='curr_addr',
size=1
)
所有对Lambda函数的调用都会失败,并出现以下错误:
调用搜索操作时出错(AccessDenied):用户:arn:aws:sts::22222:假定角色/my_cloudsearch\u query\u角色/my_lambda\u func无权执行:cloudsearch:搜索资源:myCSDomain
我确信我的帐户ID是正确的,所以没有混淆。我还需要做些什么来让它工作吗?
您需要承担帐户111111中的角色,然后使用返回的凭据创建客户端对象。使用假定角色boto3 API调用获取凭据。下面是一个示例代码:
role_arn = "arn:aws:iam::111111111111:role/my_cloudsearch_query_role"
sts = boto3.client('sts', region_name="us-east-1")
token = sts.assume_role(RoleArn=role_arn, RoleSessionName="Session1")
credentials = token['Credentials']
access_key = credentials['AccessKeyId']
secret_key = credentials['SecretAccessKey']
token = credentials['SessionToken']
session = boto3.session.Session(
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
aws_session_token=token
)
client = session.client('cloudsearchdomain', endpoint_url=endpoint)
response = client.search(...)
请使用正确的详细信息更新角色信息。关于会话对象的文档可以在这里找到。
我有两个帐户(和)。 承载一个API,用于处理文件上载到的存储桶中(我们称之为)。上传触发SNS转换图像或转码视频。结果文件被放入()中的另一个桶中,这将再次触发SNS。然后,我将文件(作为user)复制到()中的最终存储桶。 中的存储桶策略 中的用户策略 我使用aws-sdk for nodejs复制文件,并将ACL设置为,以便的用户可以访问中复制的文件,尽管的用户仍然是文件的所有者。 这一切都
问题内容: 我正在尝试从数据库中获取记录。但我正面临拒绝访问的问题。我尝试了在堆栈溢出中提到的其他解决方案,例如向用户授予特权。 访问数据库的代码: 错误的堆栈跟踪: 在这种情况下可能是什么问题。我尝试创建一个新的数据库,但是也没有用。 问题答案: 问题是授予表根用户的权限。’root’@’%’没有任何权限。.就像我以前用作连接地址一样,因此它给出了拒绝访问错误.. 是IP地址的通配符。所以mys
我正在编写一个小型Java RMI服务器和客户端程序。我花了一些时间试图找出错误消息,但没有成功。 客户端生成以下错误: 尝试连接到:127.0.0.1:3232错误!!!:StockClient:Main:无法连接到服务器:java.rmi.UnMarshalException:解封返回头时出错;嵌套异常为:java.rmi.UnmarshalException:反封送返回头时出错;嵌套异常为:
问题内容: 这是我的编辑从第27行到第39行的代码: 我认为我的问题可能与Win7教授有关:(访问被拒绝) 如何解决这个问题,或者我需要做些什么或阅读才能使它起作用? 谢谢你不燃烧。 我只是更改了文件夹选项,使我获得完整的(Access …),现在我只需要弄清楚为什么在运行javac VendingMachine.java时为什么没有得到任何输出,我想是有一个新问题。 问题答案: 您的工作目录为。
问题内容: 我正在尝试读取文件夹中的文件,但是当我运行该程序时,它将引发此异常。我也尝试了其他一些文件夹。它引发相同的异常。 问题答案: 您无法打开和读取目录,无法使用和方法区分文件和文件夹。您可以使用和方法获取文件夹的内容(分别用于文件名和s),还可以指定一个过滤器来选择列出的文件的子集。
我正在使用wamp服务器,我的phpMyAdmin页面返回了以下错误。 Wamp服务器版本:2.2 MySQL版本:5.5.24 #1045-用户“root”@“本地主机”的访问被拒绝(使用密码:是) 我编辑了我的配置文件wamp\app\phpmyadmin4.1.14\config.inc.php: 但这并没有解决问题。任何帮助都将不胜感激。