私有发布的AWS Sumerian场景如何在React应用中集成Polly、Lex功能
私有发布Sumerian场景集成Polly、Lex功能的解决方法
问题原因
私有发布的Sumerian场景默认不会继承Amplify的登录用户凭证,调用Polly、Lex服务时会因权限校验失败无法运行;公开发布场景使用匿名公开权限,只要对应服务开了匿名访问就能正常运行,所以才会出现两种发布模式效果不一致的情况。
修复步骤
1. 调整App.js代码
你原有代码没有将配置好权限的AWS SDK实例传递给SumerianScene组件,参考以下代码修改:
import React, {Component} from 'react'; import './App.css'; import { withAuthenticator, SumerianScene } from 'aws-amplify-react'; import Amplify, { Auth } from 'aws-amplify'; import Aws_exports from './aws-exports'; import '@aws-amplify/ui/dist/style.css'; import AWS from 'aws-sdk'; Amplify.configure(Aws_exports); // 配置AWS SDK从Amplify Auth获取当前登录用户的凭证 AWS.config.region = Aws_exports.aws_project_region; AWS.config.credentials = () => Auth.currentCredentials(); class App extends Component { render() { return ( <div style={ { height: '100vh' } }> {/* 将配置好的AWS实例传递给SumerianScene,注意检查sceneName拼写是否正确 */} <SumerianScene sceneName='Scene1' awsSdk={AWS}/> </div> ); } }; export default withAuthenticator(App);
2. 配置IAM角色权限
找到Amplify项目生成的已认证用户IAM角色,为其添加以下权限(可根据实际需求缩小权限范围):
- 调用Polly服务的权限,例如
AmazonPollyReadOnlyAccess系统策略 - 调用目标Lex机器人的权限,例如
AmazonLexRunBotsOnly系统策略,也可以自定义策略仅允许访问指定的Lex机器人ARN
3. 检查Sumerian场景配置
打开Sumerian编辑器,找到场景内的Lex、Polly组件,关闭「使用匿名凭证」的配置选项,重新导出场景包上传到Amplify即可。
内容的提问来源于stack exchange,提问作者joseph chai
相关产品推荐
相关产品推荐

