projectdiscovery/nuclei · error
aws s3 bucket details are missing. Please provide %s
Error message
aws s3 bucket details are missing. Please provide %s
What it means
Startup options validation (internal/runner/options.go:193) refuses -update-templates runs that would download templates from S3 when required AWS settings are missing. With AwsBucketName set and UpdateTemplates true (and -aws-template-disable-download absent), validateMissingS3Options collects missing items among AWS_TEMPLATE_BUCKET, AWS_ACCESS_KEY, AWS_SECRET_KEY, AWS_REGION — or AWS_PROFILE as an alternative to the key trio — and the error lists exactly those names.
Source
Thrown at internal/runner/options.go:193
}
if options.DAST {
if err := validateDASTOptions(options); err != nil {
return err
}
}
// Verify if any of the client certificate options were set since it requires all three to work properly
if options.HasClientCertificates() {
if generic.EqualsAny("", options.ClientCertFile, options.ClientKeyFile, options.ClientCAFile) {
return errors.New("if a client certification option is provided, then all three must be provided")
}
validateCertificatePaths(options.Logger, options.ClientCertFile, options.ClientKeyFile, options.ClientCAFile)
}
// Verify AWS secrets are passed if a S3 template bucket is passed
if options.AwsBucketName != "" && options.UpdateTemplates && !options.AwsTemplateDisableDownload {
missing := validateMissingS3Options(options)
if missing != nil {
return fmt.Errorf("aws s3 bucket details are missing. Please provide %s", strings.Join(missing, ","))
}
}
// Verify Azure connection configuration is passed if the Azure template bucket is passed
if options.AzureContainerName != "" && options.UpdateTemplates && !options.AzureTemplateDisableDownload {
missing := validateMissingAzureOptions(options)
if missing != nil {
return fmt.Errorf("azure connection details are missing. Please provide %s", strings.Join(missing, ","))
}
}
// Verify that all GitLab options are provided if the GitLab server or token is provided
if len(options.GitLabTemplateRepositoryIDs) != 0 && options.UpdateTemplates && !options.GitLabTemplateDisableDownload {
missing := validateMissingGitLabOptions(options)
if missing != nil {
return fmt.Errorf("gitlab server details are missing. Please provide %s", strings.Join(missing, ","))
}
}View on GitHub (pinned to 265b3a3dec)
Solutions
- Provide the full key set: AWS access key, secret key, and region (flags or env, as named in the error)
- Or supply a configured AWS profile instead of static keys
- Or skip S3 downloads entirely with -aws-template-disable-download
- Drop -update-templates/-aws-bucket-name if S3 distribution was unintended
Example fix
# before nuclei -update-templates -aws-bucket-name my-bucket # after nuclei -update-templates -aws-bucket-name my-bucket \ -aws-access-key AKIA... -aws-secret-key ... -aws-region us-east-1
Defensive patterns
Strategy: validation
Validate before calling
func missingS3(o *types.Options) []string {
var m []string
if o.AwsBucketName == "" { m = append(m, "AWS_TEMPLATE_BUCKET") }
if o.AwsProfile == "" {
if o.AwsAccessKey == "" { m = append(m, "AWS_ACCESS_KEY") }
if o.AwsSecretKey == "" { m = append(m, "AWS_SECRET_KEY") }
if o.AwsRegion == "" { m = append(m, "AWS_REGION") }
}
return m
}
if options.UpdateTemplates && options.AwsBucketName != "" && !options.AwsTemplateDisableDownload {
if m := missingS3(options); len(m) > 0 {
return fmt.Errorf("incomplete AWS config: %v", m)
}
} Prevention
- Export the full AWS set (or a profile) together in CI environments
- Add a config pre-flight that mirrors validateMissingS3Options
- Use -aws-template-disable-download in jobs that never fetch from S3
When it happens
Trigger: Running `nuclei -update-templates -aws-bucket-name mybucket` without the access key, secret key, and region (or a profile); CI jobs assuming AWS env vars are exported when they are not.
Common situations: Teams distributing internal templates via S3; partial env configuration in CI; intending profile-based auth but omitting the profile flag.
Related errors
- azure connection details are missing. Please provide %s
- include directive preprocessing is disabled
- could not read profile file: %w
- prompt not found (read cap reached)
- could not parse profile YAML: %w
AI-assisted analysis of projectdiscovery/nuclei@265b3a3dec (2026-08-15).
Data as JSON: /api/errors/8a9386184039ec8d.
Report an issue: GitHub.