我有用于为S3生成AWS签名密钥的python脚本。它生成两个值:
GZkXNl6Leat71ckcwfxGuiHxt9fnkj47F1SbVjRu/t0=
20190129/eu-west-2/s3/aws4_request
两者均有效期为7天。我想要的是在Docker容器内使用cron每五天运行一次该脚本,获取输出并在Nginx配置中放置/替换值 配置:
server {
listen 80;
aws_access_key 'AKIDEXAMPLE';
aws_signing_key FIRST_VALUE;
aws_key_scope SECOND_VALUE;
aws_s3_bucket s3_bucket_name;
location / {
aws_sign;
proxy_pass http://s3_bucket_name.s3.amazonaws.com;
}
然后在容器中重新启动nginx
答案 0 :(得分:0)
假设这些值存储在val_file
中,然后将它们放入nginx.conf
中,则这种简单的解决方案应该做到-
$: cat script
#! /bin/env bash
{ read -r val1 # read the first line
read -r val2 # read the second line
sed -i "s!FIRST_VALUE!$val1!;
s!SECOND_VALUE!$val2!;
" nginx.conf
} < val_file
$: script
$: cat nginx.conf
server {
listen 80;
aws_access_key 'AKIDEXAMPLE';
aws_signing_key GZkXNl6Leat71ckcwfxGuiHxt9fnkj47F1SbVjRu/t0=;
aws_key_scope 20190129/eu-west-2/s3/aws4_request;
aws_s3_bucket s3_bucket_name;
location / {
aws_sign;
proxy_pass http://s3_bucket_name.s3.amazonaws.com;
}
冰壶使两个read
都由单个输入供给。然后,使用sed
就是!
,因为您的数据中包含标准正斜杠。 sed
上的双引号允许嵌入的vars-不理想,但在这里看起来还可以。