我们有一个现有的 AWS Amplify 项目,其中包含身份验证、api、存储、托管等。运行良好。我们现在需要使用相同的 DynamoDB 表、GraphQL 模式等创建一个单独的可公开访问的站点,而无需身份验证,并且具有不同的托管和存储资源。我们在 StackOverflow 上查看了几个类似的问题,但没有任何答案。我们最好的猜测是复制 Amplify 配置文件并删除非 api 相关的配置文件和部分 - 但如果它有效,这似乎是一个 hack。
有什么官方方法可以尝试吗?
我们有一个现有的 AWS Amplify 项目,其中包含身份验证、api、存储、托管等。运行良好。我们现在需要使用相同的 DynamoDB 表、GraphQL 模式等创建一个单独的可公开访问的站点,而无需身份验证,并且具有不同的托管和存储资源。我们在 StackOverflow 上查看了几个类似的问题,但没有任何答案。我们最好的猜测是复制 Amplify 配置文件并删除非 api 相关的配置文件和部分 - 但如果它有效,这似乎是一个 hack。
有什么官方方法可以尝试吗?
不,你在正确的轨道上。
手动传入要覆盖的资源,并为其他所有内容生成新资源。
import { mergeDeepLeft } from 'ramda';
import Amplify from '@aws-amplify/core';
import config from './aws-exports';
const myAppConfig = {
// ...
'aws_appsync_graphqlEndpoint': 'https://xxxxxx.appsync-api.us-east-1.amazonaws.com/graphql',
'aws_appsync_region': 'us-east-1',
'aws_appsync_authenticationType': 'API_KEY',
'aws_appsync_apiKey': 'da2-xxxxxxxxxxxxxxxxxxxxxxxxxx',
// ...
}
Amplify.configure(mergeDeepLeft(myAppConfig, config));