You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让AWS Amplify采用IAM认证查询AWS AppSync?

配置AWS Amplify GraphQL客户端使用IAM认证

你可以直接在代码中指定IAM凭证,只需在Amplify配置中补充凭证信息,或者在请求级别单独指定。以下是具体实现方式:

方法1:全局配置IAM凭证

修改你的Amplify配置,添加credentials字段,传入IAM用户的Access Key和Secret Key(注意:生产环境请勿硬编码密钥,建议使用环境变量或IAM角色):

import { Amplify, ResourcesConfig } from 'aws-amplify';
import { generateClient } from 'aws-amplify/api';
import { gql } from '@aws-amplify/api-graphql';
import AWS from 'aws-sdk';

// 创建IAM凭证对象
const credentials = new AWS.Credentials({
  accessKeyId: '你的IAM Access Key',
  secretAccessKey: '你的IAM Secret Key'
});

const config: ResourcesConfig = {
  API: {
    GraphQL: {
      endpoint: 'https://xxx.appsync-api.ap-southeast-2.amazonaws.com/graphql',
      region: 'ap-southeast-2',
      defaultAuthMode: 'iam',
      // 全局配置凭证
      credentials: credentials
    },
  },
};

Amplify.configure(config);

const client = generateClient();

// 执行查询
client.graphql({
  query: gql`
    query getUser($id: ID!) {
      getUser(id: $id) {
        id
        name
      }
    }
  `,
  variables: { id: '用户ID' }
});

方法2:单个请求中指定凭证

如果不需要全局配置,也可以在每次请求时单独传入凭证:

// 初始化Amplify时不全局配置凭证
const config: ResourcesConfig = {
  API: {
    GraphQL: {
      endpoint: 'https://xxx.appsync-api.ap-southeast-2.amazonaws.com/graphql',
      region: 'ap-southeast-2',
      defaultAuthMode: 'iam',
    },
  },
};

Amplify.configure(config);
const client = generateClient();

// 创建凭证对象
const credentials = new AWS.Credentials({
  accessKeyId: '你的IAM Access Key',
  secretAccessKey: '你的IAM Secret Key'
});

// 执行请求时指定凭证
client.graphql({
  query: gql`
    query getUser($id: ID!) {
      getUser(id: $id) {
        id
        name
      }
    }
  `,
  variables: { id: '用户ID' },
  authMode: 'iam',
  credentials: credentials
});

生产环境注意事项

  • 绝对不要在前端代码或公开仓库中硬编码IAM密钥,避免密钥泄露。
  • 前端应用建议使用Amazon Cognito身份池来获取临时IAM凭证,而非长期IAM用户密钥。
  • 后端服务(如Lambda、EC2)可直接使用IAM角色,无需手动配置密钥,Amplify会自动获取实例角色的凭证。

内容的提问来源于stack exchange,提问作者Joey Yi Zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:33:16