繁体   English   中英

使用R脚本将AWS S3环境变量传递给Docker

[英]Passing AWS S3 environment variables to docker with an R script

我有一个要写入S3 bucker的数据框。 我正在使用aws.s3完成此任务。 我的脚本如下所示。

library(aws.s3)

# set up AWS credentials
Sys.setenv("AWS_ACCESS_KEY_ID" = "ASUPERSECRETSTRING",
           "AWS_SECRET_ACCESS_KEY" = "ASUPERSECRETSTRING",
           "AWS_DEFAULT_REGION" = "us-east-somwhere")

s3write_using(my_data, FUN = write.csv,
          bucket = "www.My_bucket",
          object = unique_name) 

我上面的脚本没有任何问题,但是我不喜欢对我的AWS凭证进行硬编码。 我该怎么做才能避免这种情况?

将您的ENV传递给docker run命令

sudo docker run -dit -e AWS_ACCESS_KEY_ID='your_key' -e AWS_SECRET_ACCESS_KEY='your_secret' -e AWS_DEFAULT_REGION='bucket_region' busybox sh

然后修改一下您的脚本。

  test_env=Sys.getenv(c("R_HOME"))
  AWS_ACCESS_KEY_ID=Sys.getenv("AWS_ACCESS_KEY_ID");
  AWS_SECRET_ACCESS_KEY=Sys.getenv("AWS_SECRET_ACCESS_KEY")
  AWS_SECRET_ACCESS_KEY=Sys.getenv("AWS_DEFAULT_REGION")
  message("test env is:",test_env) 

上面的代码将获得env以及一个测试env。 如果仍然需要调用Sys.setenv,则可以在获得env之后像这样传递。

Sys.setenv("AWS_ACCESS_KEY_ID" = AWS_ACCESS_KEY_ID,
           "AWS_SECRET_ACCESS_KEY" = AWS_SECRET_ACCESS_KEY,
           "AWS_DEFAULT_REGION" = AWS_SECRET_ACCESS_KEY)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM