首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提供对AWS S3桶的身份验证访问?

如何提供对AWS S3桶的身份验证访问?
EN

Stack Overflow用户
提问于 2020-10-12 19:54:31
回答 1查看 609关注 0票数 0

我用expo init启动了一个名为MyVideoApp的裸露世博会应用程序。然后我创建了一个AWS帐户,并在终端中运行:

  • npm install -g @aws-amplify/cli
  • amplify configure

这将我签名到控制台,我完成了默认步骤,并在region:eu-west-2username:amplify-user中创建了一个帐户,粘贴在accessKeyId & secretAccessKeyprofile name:amplify-user-profile中。

  • cd ~/Documents/MyVideoApp/ & amplify init

代码语言:javascript
复制
? Enter a name for the project MyVideoApp
? Enter a name for the environment dev
? Choose your default editor: IntelliJ IDEA
? Choose the type of app that you're building javascript
Please tell us about your project
? What javascript framework are you using react-native
? Source Directory Path:  /
? Distribution Directory Path: /
? Build Command:  npm run-script build
? Start Command: npm run-script start
Using default provider  awscloudformation
? Do you want to use an AWS profile? Yes
? Please choose the profile you want to use amplify-user-profile
Adding backend environment dev to AWS Amplify Console app: d37chh30hholq6

  • amplify push

此时,我在我的项目目录中有一个amplify文件夹和一个名为amplify-myvideoapp-dev-50540-deployment的S3桶。我上传了一个图片到桶icon_1.png中。并试图通过点击按钮从应用程序下载。

代码语言:javascript
复制
import React from 'react';
import { StyleSheet, Text, View, SafeAreaView, Button } from 'react-native';

import Amplify, { Storage } from 'aws-amplify';
import awsmobile from "./aws-exports";
Amplify.configure(awsmobile);

async function getImage() {
  try {
    let data = await Storage.get('icon_1.jpg')
  } catch (err) {
    console.log(err)
  }

}
export default function App() {
  return (
    <SafeAreaView style={styles.container}>
      <Text>Hello, World!</Text>
      <Button title={"Click to Download!"} onPress={getImage}/>
    </SafeAreaView>
  );
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
  },
});

输出:

代码语言:javascript
复制
No credentials

[WARN] 18:54.93 AWSS3Provider - ensure credentials error, No Cognito Identity pool provided for unauthenticated access
...

所以我设置了(但可能不正确?)用户池(my_first_pool)和标识池(myvidapp)。这没什么用。此外,当我进入我的桶并单击权限->桶策略时,它只是空的.不确定是否可以,如果只有所有者尝试访问桶&它的内容。

我不知道出了什么问题,还想试试什么。实际上,我只想验证我的后端,以便任何git clone代码的人都能够运行它并访问存储桶。

编辑aws-exports.js

代码语言:javascript
复制
/* eslint-disable */
// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.
const awsmobile = {
    "aws_project_region": "eu-west-2"
};
export default awsmobile;
EN

回答 1

Stack Overflow用户

发布于 2020-10-12 20:38:05

由于您已经表示可以公开访问S3桶中的所有文件,所以我建议如下:

在AWS控制台(console.aws.amazon.com)中选择桶的

  1. 在“权限”下选择“阻止公共访问”并通过取消检查“阻止所有公共访问”下的所有选项来编辑设置,然后保存和确认.

  1. 转到桶策略,并粘贴到下面(注意:首先将"YOUR_BUCKET_NAME_HERE“替换为”YOUR_BUCKET_NAME_HERE-myvideoapp-dev-50540-部署“):

{“版本”:"2012-10-17",“声明”:[{ "Sid":"PublicRead",“效果”:“允许”,“主体”:"*",“行动”:"s3:GetObject","s3:GetObjectVersion“,"Resource":[“arn:aws:s3:YOUR_BUCKET_NAME_HERE/*”}] }

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64324533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档