首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript放大Gitpod自动设置

JavaScript放大Gitpod自动设置
EN

Stack Overflow用户
提问于 2021-08-23 17:46:50
回答 1查看 348关注 0票数 2

我正在尝试用Gitpod设置一个AWS放大器JavaScript项目,当我启动一个新的工作区时,我不需要手动完成amplify-cli步骤(添加IAM用户、生成aws-exports.js文件等等)。

到目前为止,我已经成功地在机器上成功地安装aws-cliamplify-cli (我正在将它添加到任务init上的.gitpod.yml文件中)

代码语言:javascript
复制
$ npm install @aws-amplify/cli
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

这样我就可以添加

代码语言:javascript
复制
$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_DEFAULT_REGION=us-west-2

环境变量到gitpod变量,但在运行(例如,amplify pull )时,我不像通常使用本地设置运行它时那样看到默认用户。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-24 12:53:31

我已经让它正常工作了,首先我使用Gitpod帐户设置Gitpod帐户设置设置添加了这些环境变量

代码语言:javascript
复制
AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
AWS_DEFAULT_REGION=us-west-2
AWS_AMPLIFY_PROJECT_NAME=headlessProjectName
AWS_AMPLIFY_APP_ID=amplifyServiceProjectAppId

前三种是IAM用户凭据和配置,后两种是放大特定的,可以在放大器项目的AWS控制台中找到。

之后,我为Gitpod Custom创建了一个Dockerfile (按照@Pauline的建议)和一个bash脚本,该脚本创建~/.aws配置文件并以无头模式运行amplify pull

.gitpod.dockerfile

代码语言:javascript
复制
FROM gitpod/workspace-full

# install aws-cli v2
RUN sudo curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" \
  && unzip awscliv2.zip \
  && sudo ./aws/install

# install amplify-cli
RUN sudo curl -sL https://aws-amplify.github.io/amplify-cli/install | bash && $SHELL

这将在坞映像中预装aws-cli放大-cli,以便它们可以在工作区内使用。另外,不要忘记将对接器配置添加到.gitpod.yml文件的顶部:

.gitpod.yml

代码语言:javascript
复制
image:
  file: .gitpod.Dockerfile

此时,我正在以一种在启动新工作区时不需要手动选择amplify-cli选项的方式来设置扩容。在启动时指定的环境变量的帮助下,这个魔术发生在自定义bash脚本中:

amplify-pull.bash

代码语言:javascript
复制
#!/bin/bash
set -e
IFS='|'

# Specify the headless amplify pull parameters
# https://docs.amplify.aws/cli/usage/headless/#amplify-pull-parameters
VUECONFIG="{\
\"SourceDir\":\"src\",\
\"DistributionDir\":\"dist\",\
\"BuildCommand\":\"npm run-script build\",\
\"StartCommand\":\"npm run-script serve\"\
}"
AWSCLOUDFORMATIONCONFIG="{\
\"configLevel\":\"project\",\
\"useProfile\":false,\
\"profileName\":\"default\",\
\"accessKeyId\":\"$AWS_ACCESS_KEY_ID\",\
\"secretAccessKey\":\"$AWS_SECRET_ACCESS_KEY\",\
\"region\":\"$AWS_DEFAULT_REGION\"\
}"
AMPLIFY="{\
\"projectName\":\"$AWS_AMPLIFY_PROJECT_NAME\",\
\"appId\":\"$AWS_AMPLIFY_APP_ID\",\
\"envName\":\"dev\",\
\"defaultEditor\":\"code\"\
}"
FRONTEND="{\
\"frontend\":\"javascript\",\
\"framework\":\"vue\",\
\"config\":$VUECONFIG\
}"
PROVIDERS="{\
\"awscloudformation\":$AWSCLOUDFORMATIONCONFIG\
}"

# Create AWS credential file inside ~/.aws
mkdir -p ~/.aws \
&& echo -e "[default]\naws_access_key_id=$AWS_ACCESS_KEY_ID\naws_secret_access_key=$AWS_SECRET_ACCESS_KEY" \
>> ~/.aws/credentials

# Create AWS config file ~/.aws
echo -e "[default]\nregion=$AWS_DEFAULT_REGION" >> ~/.aws/config

# Run amplify pull in Headless mode, 
# this also generates thw aws-exports.js file inside /src
amplify pull \
--amplify $AMPLIFY \
--frontend $FRONTEND \
--providers $PROVIDERS \
--yes

我使用Vue作为我的前端作为示例,因此这些值需要根据项目类型进行更改。其余的参数非常简单,关于无头模式的更多信息可以找到这里。我还在前面提到的aws配置文件命令之前创建了amplify pull

这就是最后一个.gitpod.yml文件的样子

.gitpod.yml

代码语言:javascript
复制
image:
  file: .gitpod.dockerfile
  
tasks:
  - name: Amplify pull dev
    command: |
      bash amplify-pull.bash
      gp sync-done amplify
  
  - name: Install npm packages, run dev
    init: yarn install
    command: |
      gp sync-await amplify
      yarn serve
    
ports:
  - port: 8080
    onOpen: open-preview

在使用gp同步运行dev服务器之前,我还在等待放拉完成。

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

https://stackoverflow.com/questions/68896926

复制
相关文章

相似问题

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