amazon-web-services - 我有一个角色可以完全访问 SQS,但我仍然无法向 SQS 发送消息
问题描述
请帮忙,我被AWS打败了......
我有一个具有以下权限的 lambda。
sqs 基于资源的策略和服务角色都没有任何Deny
声明。lambda 应该向另一个 SQS 队列发送一条消息,但它不能,相反我只是收到此错误
{
"code": "AccessDenied",
"time": "2021-06-03T20:50:09.722Z",
"requestId": "62e15127-9f9b-527f-b1a8-0814dd5a5c9a",
"statusCode": 403,
"retryable": false,
"retryDelay": 47.17774745450638,
"level": "error",
"message": "Access to the resource https://sqs.eu-west-1.amazonaws.com/ is denied.",
"timestamp": "2021-06-03T20:50:09.723Z"
}
应该执行此操作的 lambda 代码(此代码通常位于多个文件中)
import { SQSEvent } from 'aws-lambda';
import { isLeft } from 'fp-ts/lib/Either';
import { first } from 'lodash';
import reporter from 'io-ts-reporters';
import ExitWithSuccess from 'Entities/ExitWithSuccess';
import { error } from '@mvf/logger';
import { SQS } from 'aws-sdk';
import Event from './Event';
const sqsClient = new SQS({
region: 'eu-west-1',
});
const delayed = {
client: sqsClient,
url: 'https://sqs.eu-west-1.amazonaws.com/<account>/event_dispatcher_delayed_messages',
};
type ISqsClient = typeof delayed;
interface SqsOperations {
sendMessage(body: Record<string, unknown>): Promise<unknown>;
}
const sqs = {
instance: ({ client, url }: ISqsClient): SqsOperations => ({
sendMessage: (body: Record<string, unknown>) =>
client
.sendMessage({ QueueUrl: url, MessageBody: JSON.stringify(body) })
.promise(),
}),
delayed,
};
const lambda = async (event: SQSEvent): Promise<void> => {
const record = first(event.Records);
if (!record) {
throw new ExitWithSuccess(error, 'lambda was invoked without any records');
}
const maybeEvent = Event.decode(JSON.parse(record.body));
if (isLeft(maybeEvent)) {
throw new ExitWithSuccess(error, 'invalid record body', {
typeErrors: reporter.report(maybeEvent),
});
}
await sqs.instance(delayed).sendMessage(maybeEvent.right);
};
export default lambda;
我现在花了3天时间,有没有人遇到过类似的问题?怎么可能拥有对资源的完全访问权限但仍然无法与之交互?
非常感谢任何关于这里发生的事情的提示、建议或想法。
解决方案
SQS 队列是否有明确拒绝访问的基于资源的策略?
SQS 队列是否在 Lambda 函数所在的同一账户中?否则,您还需要允许跨账户访问。
推荐阅读
- macos - 启动 Mission Control 时如何隐藏我的 Electron 应用程序窗口?
- python - 只能比较具有相同标签的系列对象 Pandas Python
- hadoop - 无效的表别名或列引用“SYNTHJOIN_xxxxx”
- javascript - 实现用于链接类方法的 JS 装饰器
- r - 带有 tweenr/transformr 的形状的非平滑颜色过渡
- parsing - 解析器(POS、TAG、依赖)在机器翻译中的作用是什么?
- python - 计算线性回归曲线(如 tradingview 文档中所述)TALIB
- python - SKLearn 的 Birch Clustering 中的 partial_fit() 到底是什么,它可以用于非常大的数据集吗?
- performance - 是否有可以并行运行的任务的有效排序算法?
- assembly - 为什么 CPU 处于 ARM 模式时显示 PUSH 而不是 STM?