我想通过POST接口将文件上传到AWS S3 ,但我没有这样做。
我已经使它可以与PUT和一起使用getSignedUrl,但是不幸的是,该接口不允许直接文件大小的限制。因此,我尝试使用POST接口,因为在那里可以使用'content-length-range'condition。
这是我的请求签名:
const aws = require('aws-sdk');
aws.config.update({
signatureVersion: 'v4',
region: 'eu-central-1',
accessKeyId: config.aws.keyId,
secretAccessKey: config.aws.keySecret
});
const s3 = new aws.S3();
return new Promise((resolve, reject) => {
const params = {
Bucket: config.aws.bucket,
Fields: {
key: filePath
},
Expires: config.aws.expire,
Conditions: [
['acl', 'public-read'],
['content-length-range', 0, 10000000] // 10 Mb
]
};
const postUrl = s3.createPresignedPost(params, (err, data) => {
resolve(data);
});
});
Run Code Online (Sandbox Code Playgroud)
这部分似乎还可以,但是我不能使用所需的签名将文件上传到S3。
这是我所做的其他尝试:
request.post({
url: payload.url,
body: payload,
form: …Run Code Online (Sandbox Code Playgroud) 我认为从第一个数据库交互开始使用迁移是个好主意,所以我想为数据库创建创建迁移。
knexfile.js
'use strict';
require('dotenv').config({ path: 'process.env' });
const config = {
client: 'pg',
connection: {
host: process.env.DB_URL,
},
};
module.exports = config;
Run Code Online (Sandbox Code Playgroud)
迁移文件:
'use strict';
exports.up = function(knex, Promise) {
return knex.raw('CREATE DATABASE asd');
};
exports.down = function(knex, Promise) {
return knex.raw('DROP DATABASE asd');
};
exports.config = {
transaction: false
};
Run Code Online (Sandbox Code Playgroud)
到目前为止它工作正常,但是当我添加database到 knexfile 配置时,它无法迁移,因为 Knex 尝试连接到不存在的数据库。
我还尝试为这个单一的迁移使用一个新的 Knex 实例,例如:
exports.up = function(_, Promise) {
// Remove database from config so Knex won't try to connect
// to …Run Code Online (Sandbox Code Playgroud) 我在 /etc/profile 中设置了一些环境变量,我可以从 bash 访问它们,但由于某种原因我无法从 Go 获取它们。
/etc/配置文件:
...
TEST_ENV=test_me
Run Code Online (Sandbox Code Playgroud)
我可以从 bash 访问它:
echo $TEST_ENV
test_me
Run Code Online (Sandbox Code Playgroud)
我无法从 GO 访问此变量
os.Getenv("TEST_ENV") // returns ""
Run Code Online (Sandbox Code Playgroud)
如果我列出可用的环境变量
os.Environ()
Run Code Online (Sandbox Code Playgroud)
我没有看到我正在寻找的变量,但有一些变量可能会有所帮助:
SHELL=/bin/sh
USER=root
LOGNAME=root
Run Code Online (Sandbox Code Playgroud)
我想我的问题与不同的会话和外壳有关,所以我什至尝试运行
exec.Command("source /etc/profile")
Run Code Online (Sandbox Code Playgroud)
并获取之后的变量,但它仍然没有返回任何内容。
您能给我一些如何获取在 /etc/profile 中设置的环境变量的提示吗?我更喜欢从该文件中获取它们,但如果有必要,我也可以将变量放在不同的位置。