由于CORS,无法在带有AWS javascript SDK的浏览器中调用AWS StepFunctions

时间:2018-10-30 00:17:06

标签: javascript amazon-web-services cors aws-step-functions aws-sdk-js

我正在尝试在浏览器中使用AWS StepFunctions API(角度,使用AWS JavaScript API)。 使用此代码:

 OPTIONS https://states.eu-west-1.amazonaws.com/ 404 (Not Found)
 Failed to load https://states.eu-west-1.amazonaws.com/: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.

浏览器出现错误:

int findKthLargest(vector<int> vec, int k)
{
    // build min-heap
    make_heap(vec.begin(), vec.end(), greater<int>());

    for (int i = 0; i < k - 1; i++) {
        vec.pop_back();
    }

    return vec.back();
}

这是否意味着尚未准备在浏览器端使用AWS StepFunctions? 如果属实,则在AWS文档中的何处进行记录?

2 个答案:

答案 0 :(得分:1)

CORS 支持已于 2021 年 5 月添加到 AWS Step Functions。 所以现在可以使用 @aws-sdk/client-sfn ,这是一个非常基本的 TypeScript 代码:

import { SFNClient, DescribeStateMachineForExecutionCommand } from '@aws-sdk/client-sfn';
const region = 'us-east-1';
const config = {
  region,
  credentials: {
    accessKeyId: 'xxxx', // your temporary cred,
    secretAccessKey: 'xxxxx', // your temporary cred,
  },
};
const client = new SFNClient(config);
async function getDataByExecutionArn(arn: string, onChunkRead: any) {
  const command = new DescribeStateMachineForExecutionCommand({ executionArn: arn });
  return await client.send(command);
}
export default getDataByExecutionArn;

请确保不要将这些凭据放在浏览器中运行的 Javascript 中。

答案 1 :(得分:0)

当试图区分标准Javascript SDK和浏览器Javascript SDK时,文档很难理解。

根据问题的推测,实际上无法通过浏览器使用StepFunction。

这是github问题评论中的官方声明:

  

AWS Step Functions服务不支持通过CORS进行访问   请求,因此无法在浏览器中使用。

https://github.com/aws/aws-sdk-js/issues/1334#issuecomment-276215833

也许,如果Browser SDK未直接链接到标准API参考,就不会造成太多混乱。