mirror of
https://github.com/serverless/serverless.git
synced 2026-01-18 14:58:43 +00:00
60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
const BbPromise = require('bluebird');
|
|
const chalk = require('chalk');
|
|
|
|
module.exports = {
|
|
validate() {
|
|
if (!this.serverless.config.servicePath) {
|
|
const error = new this.serverless.classes.Error(
|
|
'This command can only be run inside a service directory'
|
|
);
|
|
return BbPromise.reject(error);
|
|
}
|
|
|
|
this.options.stage = this.provider.getStage();
|
|
this.options.region = this.provider.getRegion();
|
|
|
|
if (
|
|
!['logs', 'info', 'deploy', 'remove', 'rollback', 'metrics', 'invoke'].includes(
|
|
this.serverless.processedInput.commands[0]
|
|
) ||
|
|
this.serverless.processedInput.commands[1] === 'local'
|
|
) {
|
|
return BbPromise.resolve();
|
|
}
|
|
const creds = Object.assign({}, this.provider.getCredentials());
|
|
delete creds.region;
|
|
delete creds.signatureVersion;
|
|
|
|
if (
|
|
Object.keys(creds).length === 0 &&
|
|
!(process.env.AWS_WEB_IDENTITY_TOKEN_FILE && process.env.AWS_ROLE_ARN) &&
|
|
!process.env.ECS_CONTAINER_METADATA_FILE &&
|
|
!process.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI &&
|
|
!process.env.AWS_CONTAINER_CREDENTIALS_FULL_URI
|
|
) {
|
|
// first check if the EC2 Metadata Service has creds before throwing error
|
|
const ec2Credentials = new this.provider.sdk.EC2MetadataCredentials({
|
|
httpOptions: { timeout: 5000 }, // 5 second timeout
|
|
maxRetries: 0, // retry 0 times
|
|
});
|
|
return new BbPromise((resolve, reject) =>
|
|
ec2Credentials.load(err => {
|
|
if (err) {
|
|
const message = [
|
|
'AWS provider credentials not found.',
|
|
' Learn how to set up AWS provider credentials',
|
|
` in our docs here: <${chalk.green('http://slss.io/aws-creds-setup')}>.`,
|
|
].join('');
|
|
reject(new this.serverless.classes.Error(message));
|
|
} else {
|
|
resolve({});
|
|
}
|
|
})
|
|
);
|
|
}
|
|
return BbPromise.resolve();
|
|
},
|
|
};
|