Repository: cloud-custodian/cloud-custodian

Issue:
GCP: No module named 'botocore'
### Describe the bug

When running policy in GCP. Its throwing below error:

```
Traceback (most recent call last):
"/workspace/main.py", line 27, in run from c7n_gcp.handler import run
"/workspace/c7n_gcp/handler.py", line 10, in <module> from c7n.loader import PolicyLoader
"/workspace/c7n/loader.py", line 14, in <module> from c7n.policy import PolicyCollection
"/workspace/c7n/policy.py", line 18, in <module> from c7n.filters import FilterRegistry, And, Or, Not
"/workspace/c7n/filters/__init__.py", line 22, in <module> from .vpc import DefaultVpcBase
"/workspace/c7n/credentials.py", line 8, in <module> from botocore.credentials import RefreshableCredentials
ModuleNotFoundError: No module named 'botocore'
Function execution took 1439 ms, finished with status: 'crash'
```

### What did you expect to happen?

In AWS we can specify: ```packages: [botocore, boto3, urllib3]```. How can we do that in GCP, any suggestions?

### Cloud Provider

Google Cloud (GCP)

### Cloud Custodian version and dependency information

```shell
Please copy/paste the following info along with any bug reports:

Custodian:   0.9.22
Python:      3.8.8 (default, Apr 13 2021, 12:59:45) 
             [Clang 10.0.0 ]
Platform:    posix.uname_result(sysname='Darwin', nodename='C02CD0SHMD6R', release='21.6.0', version='Darwin Kernel Version 21.6.0: Wed Aug 10 14:25:27 PDT 2022; root:xnu-8020.141.5~2/RELEASE_X86_64', machine='x86_64')
Using venv:  False
Docker: False
Installed: 

PyJWT==2.6.0
adal==1.2.7
applicationinsights==0.11.10
apscheduler==3.9.1.post1
argcomplete==2.0.0
attrs==22.2.0
azure-common==1.1.28
azure-core==1.26.1
azure-cosmos==3.2.0
azure-cosmosdb-nspkg==2.0.2
azure-cosmosdb-table==1.0.6
azure-functions==1.12.0
azure-graphrbac==0.61.1
azure-identity==1.12.0
azure-keyvault==4.2.0
azure-keyvault-certificates==4.6.0
azure-keyvault-keys==4.8.0b2
azure-keyvault-secrets==4.6.0
azure-mgmt-advisor==9.0.0
azure-mgmt-apimanagement==1.0.0
azure-mgmt-applicationinsights==1.0.0
azure-mgmt-authorization==1.0.0
azure-mgmt-batch==15.0.0
azure-mgmt-cdn==10.0.0
azure-mgmt-cognitiveservices==11.0.0
azure-mgmt-compute==19.0.0
azure-mgmt-containerinstance==7.0.0
azure-mgmt-containerregistry==8.0.0b1
azure-mgmt-containerservice==21.1.0
azure-mgmt-core==1.3.2
azure-mgmt-cosmosdb==8.0.0
azure-mgmt-costmanagement==1.0.0
azure-mgmt-databricks==1.0.0b1
azure-mgmt-datafactory==1.1.0
azure-mgmt-datalake-nspkg==3.0.1
azure-mgmt-datalake-store==0.5.0
azure-mgmt-dns==8.0.0
azure-mgmt-eventgrid==10.2.0b2
azure-mgmt-eventhub==10.1.0
azure-mgmt-frontdoor==1.0.1
azure-mgmt-hdinsight==9.0.0
azure-mgmt-iothub==2.3.0
azure-mgmt-keyvault==10.1.0
azure-mgmt-logic==9.0.0
azure-mgmt-managementgroups==1.0.0
azure-mgmt-monitor==5.0.1
azure-mgmt-msi==6.1.0
azure-mgmt-network==21.0.1
azure-mgmt-nspkg==3.0.2
azure-mgmt-policyinsights==1.1.0b4
azure-mgmt-rdbms==10.2.0b6
azure-mgmt-redis==14.1.0
azure-mgmt-resource==21.1.0b1
azure-mgmt-resourcegraph==7.0.0
azure-mgmt-search==8.0.0
azure-mgmt-security==3.0.0
azure-mgmt-servicefabric==1.0.0
azure-mgmt-sql==4.0.0b6
azure-mgmt-storage==21.0.0
azure-mgmt-subscription==1.0.0
azure-mgmt-trafficmanager==1.0.0
azure-mgmt-web==7.0.0
azure-nspkg==3.0.2
azure-storage-blob==12.14.1
azure-storage-common==1.4.2
azure-storage-file==2.1.0
azure-storage-file-share==12.10.1
azure-storage-queue==12.5.0
backports-zoneinfo==0.2.1
backports.zoneinfo==0.2.1
boto3==1.26.51
botocore==1.29.51
c7n==0.9.22
cachetools==5.2.1
certifi==2022.12.7
cffi==1.15.1
charset-normalizer==3.0.1
click==8.1.3
colorama==0.4.6
cryptography==38.0.4
distlib==0.3.6
docutils==0.17.1
google-api-core==2.10.2
google-api-python-client==2.73.0
google-auth==2.16.0
google-auth-httplib2==0.1.0
google-cloud-appengine-logging==1.1.6
google-cloud-audit-log==0.2.5
google-cloud-core==2.3.2
google-cloud-logging==3.4.0
google-cloud-monitoring==2.14.0
google-cloud-storage==1.44.0
google-crc32c==1.5.0
google-resumable-media==2.4.0
googleapis-common-protos==1.58.0
grpc-google-iam-v1==0.12.6
grpcio==1.49.1
grpcio-status==1.49.1
httplib2==0.21.0
idna==3.4
importlib-metadata==4.13.0
importlib-resources==5.10.2
isodate==0.6.1
jmespath==1.0.1
jsonschema==4.17.3
mock==4.0.3
msal==1.20.0
msal-extensions==1.0.0
msrest==0.7.1
msrestazure==0.6.4
netaddr==0.7.20
oauthlib==3.2.2
pathlib2==2.3.5
pkgutil-resolve-name==1.3.10
portalocker==2.6.0
proto-plus==1.22.2
protobuf==4.21.12
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycparser==2.21
pyjwt==2.6.0
pyparsing==3.0.9
pyrate-limiter==2.8.5
pyrsistent==0.19.3
python-dateutil==2.8.2
pytz==2022.6
pytz-deprecation-shim==0.1.0.post0
pyyaml==6.0
requests==2.28.2
requests-oauthlib==1.3.1
retrying==1.3.4
rsa==4.9
s3transfer==0.6.0
setuptools==65.6.3
six==1.16.0
tabulate==0.8.10
typing-extensions==4.4.0
tzdata==2022.7
tzlocal==4.2
uritemplate==4.1.1
urllib3==1.26.14
zipp==3.11.0
```
```


### Policy

```shell
GCP policy:


vars:
  notify: &notify
    type: notify
    subject: "[GCP Policy] [Account: {{account_id}} ] - Enabling Subnet flow logs"
    template: email.html
    to:
      - 1234@test.com
    format: txt
    transport:
        type: pubsub
        topic: projects/demo/topics/c7n-notifications


policies:
  - name: enable-subnet-flowlogs
    description: |
      Enabling Subnet flowlogs.
    resource: gcp.subnet
    mode:
      type: gcp-audit
      methods:
        - v1.compute.subnetworks.insert
        - beta.compute.subnetworks.insert
    filters:
      - enableFlowLogs: empty
      - type: value
        key: "network"
        op: regex
        value: "(.*?networks/demo-managed-.*?)"
        value_type: normalize
    actions:
       - <<: *notify
       - type: set-flow-log
```
```


### Relevant log/traceback output

_No response_

### Extra information or context

_No response_


Discussion:

Resolving patch:
diff --git a/tools/c7n_gcp/c7n_gcp/mu.py b/tools/c7n_gcp/c7n_gcp/mu.py
--- a/tools/c7n_gcp/c7n_gcp/mu.py
+++ b/tools/c7n_gcp/c7n_gcp/mu.py
@@ -36,6 +36,7 @@ def custodian_archive(packages=None, deps=()):
     # note we pin requirements to the same versions installed locally.
     requirements = set()
     requirements.update((
+        'boto3',
         'jmespath',
         'retrying',
         'python-dateutil',


Test patch: